【发布时间】:2021-08-28 15:46:13
【问题描述】:
我想将数据(保存为状态)传递给绘制数据图表的反应组件。该图还应该能够过滤数据。
数据是一个嵌套对象,结构如下。
{
"mylog": {
"entries": [
{"Bool1": false, "Bool2": true, ...},
{"Bool1": true, "Bool2": true, ...},
...
]
},
"another_log": {...},
...
}
我的方法是在图形组件中定义一个名为filteredData 的状态,将其设置为传递给图形的数据,然后在我要过滤数据时更新filteredData 状态。
function App(props) {
const [data, setData] = useState({...}); // Initial data here
return (
<div>
<Graph data={data} />
</div>
);
}
function Graph(props) {
const [filteredData, setFilteredData] = useState(props.data);
const filter = () => {
setFilteredData(data => {
...
});
}
return (
...
);
}
但是,当filteredData 被过滤时,App 组件中的data 也会被过滤(这会破坏事情)。我试过在几个地方用{..props.data} 代替props.data,但这并没有解决问题。有任何想法吗?提前致谢。
这是一个最小的、可重复的示例:https://codesandbox.io/s/elastic-morse-lwt9m?file=/src/App.js
【问题讨论】:
标签: reactjs deep-copy react-component react-state shallow-copy