【发布时间】:2020-10-09 11:38:27
【问题描述】:
我正在使用 React useState 来声明我的对象:
const [results, setResults] = useState();
console.log(results);
在同一个文件中,我返回 React 组件并传递一些道具:
<Table
data={results ? results.Companies : []}
setData={(newArr) => {
let newResults = results;
newResults.Companies = newArr.slice(0);
console.log(newResults);
return setResults(newResults);
}}
/>
P.S.:请记住,我只传递给 data 的 results.Companies 是 array。
在这个 Table 组件中,我正在更改 results.Companies 属性:
props.setData(arr);
所以当它触发 Table 组件中的函数时:
setData={(newArr) => {
let newResults = results; // I am assigning to newResults current result state
newResults.Companies = newArr.slice(0); // I am replacing newResults.Companies with new array I want to pass
console.log(newResults); // HERE is the desired results output
return setResults(newResults);
}}
newResults 变量正是我想要传递给 setResutlts 的结果。但是这个设置不会触发重新渲染,例如这个 console.log(results) 不会被调用。 为什么在我将新值传递给 setResults()
后它没有触发【问题讨论】:
-
你能做一个codesandbox吗?
-
@RedBaron 这是一种复杂的项目和代码。我正在从使用令牌的 API 中获取初始结果等等......
-
但是如果您使用模拟数据制作简化版本,那么它应该可以工作
标签: javascript reactjs react-hooks setstate use-effect