Reactjs Redux未更新nasted状态
我有一个数组,我正在从子组件分派Reactjs Redux未更新nasted状态,reactjs,react-native,redux,react-redux,Reactjs,React Native,Redux,React Redux,我有一个数组,我正在从子组件分派LIKE\u POST操作。Redux状态已更新,但视图未更新。我正在使用Flatlist。并使用extradata。(工作添加帖子和删除帖子操作) action.post id 在减速器中: const initialState = { feedData: [], loading: false, }; ... //FETCH FEED ... case LIKE_POST:
LIKE\u POST
操作。Redux状态已更新,但视图未更新。我正在使用Flatlist
。并使用extradata
。(工作添加帖子
和删除帖子
操作)
action.post id
在减速器中:
const initialState = {
feedData: [],
loading: false,
};
...
//FETCH FEED
...
case LIKE_POST:
return {
...state,
feedData: [
...state.feedData.map((post) => {
if (post.id === action.payload) {
return {
...post,
like: {
count: 1,
isLiked: true,
},
};
}
return post;
}),
],
};
记录器正在返回如:1
和islike:true
,但视图未更新。我解决了问题
我在feedData
的组件中使用useState
钩子。当我删除useState并直接使用存储的数据时。成功了
const feedData = useSelector(state=>state.feed.feedData)
const [data, setData] = useState(feedData) => THIS IS THE MISTAKE
让我们看看您在这里使用的选择器(或
useSelector
或connect
)调用。另外,一般来说,您可能应该遵循,而不是手工编写普通的redux逻辑,因为在RTK减缩器中,您可以使用变异逻辑。在这种情况下,您的代码将变成constfound=state.feedData.find(post=>post.id==action.payload);if(found){found.like={count:1,isLiked:true}
恭喜你!