我的情况如下:
我的 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 { ... }
没有什么特别的,因为这适用于其他所有Component
。render
然而,当我在它们的方法中记录状态时在同一级别调用这些组件时:
<div>
<Component1 />
<Component2 />
</div>
Component1
按原样记录状态,记录Component2
初始状态。当我将组件切换到位时:
<div>
<Component2 />
<Component1 />
</div>
相反的情况发生:Component2
记录正确的状态,Component1
没有。
当我在彼此内部调用任一组件时(其中Component1
调用Component2
作为其渲染的一部分),一切都很好。
我不确定这里发生了什么,也找不到任何文档说明您不应调用 2 个组件在同一位置侦听同一状态。
希望有人可以帮助我了解发生了什么