React新手求助:点击DataGrid行后State变量无法传递给子组件
React State传递问题修复方案
核心错误点及修正步骤:
错误更新State
你直接给State的setter函数赋值,这完全不符合React的State更新规则。正确的做法是调用setter函数:const handleOnCellClick = (params) => { setOpen(true); const name = params.row; // 声明变量避免全局污染 setsendRowInfo(params.row); // 调用setter更新状态 };错误传递State给子组件
你传递的是State的setter函数,而不是实际的State值,子组件自然拿不到行数据:// 错误写法 <MyForm send={{setsendRowInfo}} /> // 正确写法 <MyForm send={sendRowInfo} />子组件错误处理Props
直接给setter赋值是无效的,要么直接使用Props,要么用useEffect同步到内部State:function MyForm(props) { // 方式1:直接使用Props console.log(props.send); // 方式2:如需同步到内部State const [rowResults, setrowResults] = useState(props.send); useEffect(() => { setrowResults(props.send); }, [props.send]); // 监听Props变化更新State console.log(rowResults); }State声明位置错误
React组件的State必须在组件函数内部声明,不能放在外部:function DataTable(){ const [sendRowInfo, setsendRowInfo] = useState([]); // 移到组件内部 const [open, setOpen] = useState(false); // 补充open的State声明(原代码缺失) // ...其他代码 }
内容的提问来源于stack exchange,提问作者Jeff Miller
相关产品推荐
相关产品推荐

