我在Redux中拥有自己的状态,并且正在使用react-redux连接器将其绑定到我的React应用程序中.在设置状态的初始运行期间,连接工作很好.但是,当我更新我的reducer中的一部分状态时,React没有读取它的更改,因此组件不会再次渲染.当我做一些强制渲染的其他动作时,状态实际上已经改变了.
它似乎有与没有被所述状态做识别已经改变为和,在反应-终极版的wrapWithConnect方法,所述storeChanged和propsChanged都评估为假通过初始运行之后.一个线索可能是反应 - 还原在这些检查中的浅层比较.
问题是" 当Redux中的状态发生变化时,我需要做些什么才能让React显示对状态的更改 "?
国家的相关部分如下
let thisOrder = Immutable.fromJS( {
"projectNumber": '',
"orderHeader": {
"order_id": "",
"firstname": "",
"lastname": "",
"address1": "",
),
"orderProducts": [],
"lastOperation": ''} );
Run Code Online (Sandbox Code Playgroud)
更新的部分是orderProducts,这是一组基本上看起来像的产品
orderProducts:[{productSKU:'Y54345',productDesc:'What it is',price:"4.60",qty:2},
{productSKU:'Y54345',productDesc:'What what is',price:"9.00",qty:1}]
Run Code Online (Sandbox Code Playgroud)
当更新下面的reducer中的qty或price(由动作调用)时,结果newState 具有更改
case OrderConstants.ORDER_PRODUCT_UPDATE:{
let productList = updateProductList( action.updateProduct, state.get(
'orderProducts' ))
let newState = state.update( 'orderProducts',
productList).set('lastOperation', action.type);
return newState;}
Run Code Online (Sandbox Code Playgroud)
最后,控制React组件然后向下游发送道具
render: function () {
return (
<div>
<ProductList updateOrder={this.updateOrder()} products={this.props.products}/>
{this.submitContinueButton()} {this.submitButton()}
{this.cancelButton()}
</div>
</div>
) …Run Code Online (Sandbox Code Playgroud) 我有一个Vue应用程序,它是一个复杂的表单,根据您做出的选择,其中包含许多开关规则。我通过在各部分中创建组件来完成此操作。在启用“提交”按钮(在上一节中)之前,我要检查是否可以填写的所有内容都已启用。我有一个在填充元素后会更新的类。需要填充的类将一直存在,直到将某些数据放入字段或组件中为止
<template>
<div>
<div>
<label class="block">
<span :class="[Boolean(loadFormDate) ? 'bg-blue-lighter': 'need-to-fill']"><strong>Date:</strong></span>
<datepicker
placeholder="Select Date"
@selected="commitDate('formDate', $event)"
:value="loadFormDate" />
</label>
</div>
<div class="flex-1">
<label class="block">
<span :class="[Boolean(staffID) ? 'bg-blue-lighter': 'need-to-fill','w-full']"><strong>Staff ID:</strong></span>
<input class="block" placeholder="Staff ID"
@input="commitField('staffID', $event.target.value)"
:value="staffID"
/>
</label>
</div>
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
我想搜索所有元素,以查看“需要填写”在任何元素中都不存在,如果不存在,则启用提交按钮。