React |更新对象的一部分并设置状态



我正在尝试更新React中对象的一部分并设置状态。我已经做到了,但我似乎完全错了。

我有一个处于组件安装时设置的状态的对象。我有一个复选框,它使用对象选定的属性。本质上,单击此复选框时,我想设置状态并切换属性。我正在用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>
)
})

}

存储您的post,使id是键,post是对象。然后在更新时做一些类似posts.active={…posts.active,…post};

使用带有新post对象的spread运算符来更新posts对象。

最新更新