我试图在React中更新对象的一部分并设置状态。我已经启用了它,但似乎我正在以完全错误的方式进行操作。
我有一个处于安装组件时设置的状态的对象。我有一个复选框,它使用对象的selected属性。本质上,单击此复选框,我想设置状态并切换属性。 post.selected = !post.selected
我正在做的事情。
当我想更新状态以反映此更改时,困难就来了,我要遍历整个原始对象,寻找帖子。更新帖子,然后更新状态。这真的是必须要做的吗?还是我可以直接更新此值本身并在设置状态函数中定位该值?
onItemClick(post, is_active = true) {
const posts = this.state.posts;
let postType = is_active ? 'active' : 'not-active';
const parentCategory = posts.find(statePosts => {
return posts[postType].id === post.id;
});
const foundPost = parentCategory[postType].find(selectedPost => selectedPost.id === post.id);
foundPost.selected = !foundPost.selected;
this.setState({posts: posts});
}
当我想要做的只是更新状态中的一个对象时,似乎有点费劲了。
获取帖子:
componentWillReceiveProps(props) {
this.setState({posts: props.posts});
}
帖子循环:
{
posts.active.map((post) => {
return (
<View key={post.id}>
<CheckBox
checkBoxColor={"green"}
checkedCheckBoxColor={"blue"}
onClick={() => {
this.onItemClick(post)
}}
isChecked={post.selected}
rightText={post.description} />
</View>
)
})
}
答案 0 :(得分:1)
存储您的帖子,以id为键,而post为对象。然后在更新时执行诸如posts.active = {... posts.active,... post};
答案 1 :(得分:0)
使用带有新发布对象的传播算子来更新发布对象。