ReactJS - 如何防止ContextTypes被改变

时间:2016-01-08 06:26:45

标签: reactjs redux

我有两种上下文类型:(1)productsContexts& (2)rangeContext。

rangeContext只是json文件的预设范围,以便根据每个范围对产品进行分组。

  

以下是对产品进行分组的侧箱组件的说明   根据这些预设范围,它也说明了问题:

enter image description here

首次访问该页面,一切正常,但点击关闭,然后重新访问该页面,之前的数据仍然存在,然后自动加倍,第三次,它是三倍,依此类推。

我没有对rangeContext数据做任何事情,而是将它传递给局部变量以进行映射数据操作。我没有在上下文中保存任何内容。

这是我试图解决这个问题的方法;都失败了:

  1. 我先将rangeContext传递给state,然后在componentWillUnmount上,我初始化了状态。

  2. I Object.assign()将rangeContext指向局部变量,而不是直接将上下文传递给局部变量。

  3. 我完全从这个组件中取出了上下文并在其父级中使用它,并将其作为道具传递给该组件。

  4. 什么都没有用。虽然硬数据没有改变,但是范围组件永远不会在卸载时初始化,并且重新访问页面只是继续前一次访问范围内的内容并添加到其中。

    我知道我可能没有很好地解释,但我知道问题与上下文有关,我确定不想再次访问数据库,因为我已经为之前的组件做了。

    有没有人认识到这个问题并有解决方案?

    由于

    更新

    我移动了侧边框组件范围之外的contextTypes。 使用redux flux,我在side-box的父级中调度范围动作,并将范围作为道具传递给side-box。问题消失了,但我不高兴。我需要有人告诉我为什么这是正确的事情,因为......

    1. 我之前在组件中调用过范围操作,为什么不将它放在contextTypes中而不是再次调用redux?

    2. 因为我在侧盒上只有3行代码,所以我有相同数量的代码行,因为现在我调用propTypes,但现在我也有 父调用redux中的更多代码行,我已经为前一个组件中的范围数据做了一些事情。

    3.   

      我非常感谢有人告诉我,我是否还在这样做   所有错误,或为什么它是正确的我必须再增加26条REDUNDANT行   代码调用redux flux?

0 个答案:

没有答案