我有一个包含 React + Redux 应用程序的 Electron 桌面应用程序。 Redux 在开发中本地运行应用程序时工作正常,但一旦应用程序构建为 native 桌面应用程序就不会更新组件。
许多文章和问题似乎认为商店配置不正确,或者我是直接改变状态而不是更新状态,或者我的 mapStateToProps
函数设置不正确。
我看不出这些怎么会是个问题,因为我的应用程序在开发过程中可以正常工作,而且我可以看到商店已更新并且组件已重新呈现。
但在生产中,会发生以下情况:
- 商店状态已初始化
- 一个 Action 被调度
- 状态更新(我可以在开发工具中看到)
- 我的连接组件都没有使用更新的 Prop 重新渲染。
我能看到开发和生产之间的唯一区别是,在 Electron 中,在开发期间,应用程序通过 http://localhost
加载,而在生产期间,它通过 file 加载:///
我的商店配置为:
export const store = createStore(rootReducer, composeWithDevTools(applyMiddleware(thunk)));
商店提供为:
<Provider store={store}>
<App />
</Provider>
我正在将我的组件连接到商店:
const mapStateToProps = (state: RootState) => {
return {
hasLoaded: state.products.hasLoaded,
products: state.products.products
};
};
const mapDispatchToProps = {
getProducts: getProducts
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(ProductsList);
然后从组件内部调用 getProducts,如:
componentDidMount() {
this.props.getProducts();
}
我希望使用检索到的产品更新状态,然后组件应该使用更新后的商店状态作为 Prop 重新呈现。
相反,商店状态被更新 - as I can see it in Redux DevTools - 但连接的组件永远不会重新呈现,也不会调用 componentDidUpdate
。
最佳答案
我花了很多天的时间和你一样的感受和问题。在生产中检测到 redux 的订阅功能仍然有效,但 react-redux 无法正常连接后,我尝试降级并成功。
关于reactjs - Redux 在开发中工作,似乎在生产中中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55637288/