Taro中Redux状态更新后页面不重新渲染怎么办?
我在Taro项目里用Redux管理状态,dispatch action之后state确实变了,但页面就是不重新渲染。我试过用useSelector取数据,也确认了reducer返回的是新对象,可组件还是没反应,这是为啥?
我的reducer大概是这样写的:
const userReducer = (state = { name: '' }, action) => {
if (action.type === 'SET_NAME') {
return { ...state, name: action.payload };
}
return state;
};
组件里是这么用的:const name = useSelector(state => state.user.name);,但改了name页面完全没变化。
@tarojs/redux或者确保react-redux的Provider正确包裹了整个应用。检查一下app.tsx入口文件,Provider是不是包在最外层:再一个坑,确认一下
useSelector是从react-redux引入的,别从别的地方瞎import。如果这两步都对了还不行,试试把useSelector的第二个参数加上浅比较shallowEqual:实在不行就把Taro版本和redux相关依赖发出来瞅瞅,有些版本组合确实有兼容性坑。