Taro中Redux状态更新后页面不重新渲染怎么办?

A. 普涵 阅读 35

我在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页面完全没变化。

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
Newb.国玲
你这问题八成是Provider没配对,Taro里要用 @tarojs/redux 或者确保 react-redux 的Provider正确包裹了整个应用。检查一下app.tsx入口文件,Provider是不是包在最外层:

import { Provider } from 'react-redux';
import store from './store';

function App({ children }) {
return (

{children}

);
}


再一个坑,确认一下 useSelector 是从 react-redux 引入的,别从别的地方瞎import。如果这两步都对了还不行,试试把 useSelector 的第二个参数加上浅比较 shallowEqual

import { useSelector, shallowEqual } from 'react-redux';

const name = useSelector(state => state.user.name, shallowEqual);


实在不行就把Taro版本和redux相关依赖发出来瞅瞅,有些版本组合确实有兼容性坑。
点赞 3
2026-02-28 22:09