【发布时间】:2019-04-09 16:41:10
【问题描述】:
我正在使用钩子创建一个反应应用程序,但我的代码出现了一个奇怪的行为,我不打算把我的所有代码都放在这里,但我会给你一个例子。
const Child = props => {
const {data} = props;
const [myData, setMyData] = useState(data);
const items => myData.map( r => <li> r </li> );
return ( <ul> { items } </ul> );
}
const Parent = () => {
return (<div>
<Child data={ [1, 2, 3] }
</div> );
}
我正在更改父组件发送给子组件的数组。 当我向数组中添加一个新元素时,子组件会重新渲染,因此 MyData 等于数组(这是有道理的,因为子组件是通过道具更改重新渲染的)。 如果我从数组中删除一个元素,子组件会重新渲染,但 myData 不会更改,并且我从数组中删除的元素仍然存在于 myData 中。
为什么当我将元素添加到数组时 useState 将数组设置为 myData 但是当我删除元素时它似乎不起作用,即使子组件被重新渲染。
我知道这看起来有点笨,你可以问我,为什么你不只在 Child 组件上使用 props 值而不是 state 值,那么想法是在 Child 组件上有一个搜索控件所以我可以对 MyData 而不是 props 值进行某种搜索(但也许还有另一种方法)。
【问题讨论】:
-
你能把所有相关代码贴在这里吗?
标签: javascript reactjs react-hooks