0

我的情况如下:

我的 redux 状态中有 1 个字段,只不过是以下类型的对象:{String, [{String, Float}]}. 在我的状态下,这个字段被 2 个组件使用(他们使用 GraphQLString作为变量进行查询)。

两个组件都通过该connect方法连接(使用装饰器语法)。

@connect((state) => ({variable: state.variable.field}))
@graphql(QUERY, {...})
export default class Component1 extends React.Component { ... }


@connect((state) => ({variable: state.variable.field}))
@graphql(QUERY, {...})
export default class Component2 extends React.Component { ... }

没有什么特别的,因为这适用于其他所有Componentrender然而,当我在它们的方法中记录状态时在同一级别调用这些组件时:

<div>
    <Component1 />
    <Component2 />
</div>

Component1按原样记录状态,记录Component2初始状态。当我将组件切换到位时:

<div>
    <Component2 />
    <Component1 />
</div>

相反的情况发生:Component2记录正确的状态,Component1没有。

当我在彼此内部调用任一组件时(其中Component1调用Component2作为其渲染的一部分),一切都很好。

我不确定这里发生了什么,也找不到任何文档说明您不应调用 2 个组件在同一位置侦听同一状态。

希望有人可以帮助我了解发生了什么

4

1 回答 1

0

通常这不应该是一个问题。那么问题可能是由您的代码引起的?(只是一个疯狂的猜测,没有看到任何实际代码!)

我还是建议将connectto Redux 提升到父组件中。特别是如果两个组件都需要完全相同的状态部分。

于 2016-10-19T07:44:02.383 回答