我将下面的道具(store Name)传递给我的组件:
<MyComponent reducerName="city" />
我想用动态名称(this.props.reducerName)连接到存储
例如
export default connect(state => ({
some: state[this.props.reducerName]
}), { })(MyComponent);
如何装饰redux connect,或者我必须做什么?
我试图跳过redux连接并使用store.subscribe
componentDidMount() {
store.subscribe(() => {
this.setState({some: store.getState([this.props.reducerName]});
});
}
但当我移动到另一页时,我看到以下错误:
警告:设置状态(…):只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用了setState()。这是禁止的。
如何从redux商店退订时,组件将卸载?
connect
还有第二个参数ownProps
,它是一个包含所有传入的props的对象。您可以这样做:
const mapStateToProps = (state, { reducerName = 'defaultReducer' }) => ({
some: state[reducerName],
});
export default connect(mapStateToProps)(MyComponent);
要取消订阅,您可以简单地执行函数返回store.subscribe
:
componentDidMount() {
this.unsubscribe = store.subscribe(() => {
// ...
});
}
componentWillUnmount() {
this.unsubscribe();
}
我正在创建一个react组件,以基于lat/long坐标列表在地图上显示标记。 使用谷歌地图反应npm包,我有一个容器组件和一个地图组件。MapsContainer组件被包装在GoogleApiComponent HOC中,如下所示。 我现在需要做的是将这个MapContainer组件连接到用于lat/long组件列表的redux存储。我试过了 和 每次我收到以下警告并且我的贴图不渲染时:
我正试着和redux thunk联系 我如何让调度从商店返回promise? 更具体地说: 我可能只是不理解这里的一些内容,但在所有使用的示例中,它们调用一个单独的异步事件(比如),它显然会返回一个。 我特别想要的是当我向商店发送一个动作时:我如何确保商店在上面的函数中发生任何其他事情之前,已经完全处理了该动作。 理想情况下,我希望商店能回报一些promise,但我不明白这是怎么发生的,在哪里发生
问题内容: 在我的组件中,我具有以下内容: 不调用取消订阅会导致以下错误: 警告:setState(…):只能更新已安装或正在安装的组件。这通常意味着您在未安装的组件上调用了setState()。这是无人值守。 我想知道的是我应该分配给它,还是有更好的分配空间? 问题答案: 正如Salehen Rahman在上面的评论中提到的,我最终还是使用react-redux。 根据他们的文档,我创建了两个函
问题内容: 我的Jenkins安装中有一些不再需要的插件。我已经禁用了插件(并且我的构建仍然可以使用),并且我想完全删除插件。完全删除Jenkins(Hudson)插件的正确过程是什么? 问题答案: 就像JesseGlick在他的回答中提到的那样,如果您使用的是Jenkins 1.487或更高版本,则可以通过本机方式在JenkinsUI中卸载插件。有关详细信息,请参见JENKINS-3070。
问题内容: 我用来对我的React组件进行单元测试。我知道,为了测试原始未连接的组件,我只需要导出它并对其进行测试(我已经做到了)。我已经设法为连接的组件编写了一个测试,但是我真的不确定这是否是正确的方法,以及我究竟想对连接的组件进行什么测试。 Container.jsx Container.test.js 问题答案: 这是个有趣的问题。 我通常会同时导入容器和组件以进行测试。对于容器测试,我使用
我有一些“ChangeMainItem”操作(在我的例子中,它是由外部系统或可能的组件之一调度的)。此操作(例如)仅更新reducer中状态的一个属性(例如)。 我的组件A和B需要对此状态更改做出反应:显示加载指示器、获取其他数据并显示结果。顺序动作可以通过一些异步动作库来完成,但是我应该把调度异步动作放在哪里呢?显然,我不能在组件A和B的reducer中分派异步操作,我也不想将原始操作更改为异步