Reactjs 中的组件不进行渲染,尽管具有键属性
我是一个新的反应,这是我与Redux的第一个项目 我获取一些数据并将其设置在状态树中。当my reducerReactjs 中的组件不进行渲染,尽管具有键属性,reactjs,react-redux,Reactjs,React Redux,我是一个新的反应,这是我与Redux的第一个项目 我获取一些数据并将其设置在状态树中。当my reducerADD\u PRODUCTS\u TO\u CART运行时,myPRODUCTS->render()会运行,但Product->render()不会运行,尽管有一个键 这里有一个要点,这是我能概括为的最基本的要点。希望它有意义,我已经包含了一个表示树状态的文件,以便您可以查看数据结构 TLDR:基本上,股票在状态树中递减,但不呈现。我做错了什么 更新:我在所有渲染方法中都加入了conso
ADD\u PRODUCTS\u TO\u CART
运行时,myPRODUCTS->render()
会运行,但Product->render()
不会运行,尽管有一个键
这里有一个要点,这是我能概括为的最基本的要点。希望它有意义,我已经包含了一个表示树状态的文件,以便您可以查看数据结构
TLDR:基本上,股票在状态树中递减,但不呈现。我做错了什么
更新:我在所有渲染方法中都加入了console.log()
,以查看调用了什么。当我减少产品库存时,产品不会被调用。这很可能是由于我正在做的.map(()=>)
造成的。我尝试更改我的key={}
属性以包括如下股票:
.map((obj)=>)
这似乎有效。但我知道这有多稳定
Update2:似乎如果我把我的data={}
属性放在像这样的单独属性中
在渲染产品的功能中
您得到:
if (data.Variations) { //TODO: Variation logic
return false;
}
因为在data
中,您得到了Variations
参数,它通过了这个范围(因为Variations
不是null
或未定义的
),并返回null而不是呈现组件
删除return false
,您的代码应该可以正常工作。就像@kiarashws所说的,只要在render()
方法中return false
,它就不会渲染。确保不要仅在不想渲染时渲染
常见的代码如下所示:
render() {
if (props.shouldNotRender)
return null or false;
return <div>
...
</div>
}
render(){
如果(道具不应渲染)
返回null或false;
返回
...
}
您的道具在产品中的价值是什么?您好。我已经删除了数据。不幸的是,它不起作用。此外,我在render方法中加入了console.log()
。我知道产品的render
方法中没有调用product->render()。下面是将产品添加到购物车
操作之前和之后的转储:请注意,为了这个要点,我将代码改回了
。使其与问题相关。