【发布时间】:2018-03-08 19:57:18
【问题描述】:
已解决
@jonahe 帮助我意识到我在组件状态中存储了陈旧的数据,导致 redux 和组件存储之间不匹配。
@vs1682 指出存储更新检查相对较浅,因此不应依赖于深层嵌套更改。
原问题:
我在 redux 中使用基于 promise 的操作并遇到以下问题:一旦我的状态更新(根据 redux 记录器验证),可视化组件不会反映这一点。
动作流程:
- 表单已提交(例如:生物属性更改)
- 智能组件触发动作调度
- 操作按预期工作并触发减速器
- 状态更新良好(反映在控制台的 redux 记录器中)
- 界面不反映变化(但状态肯定反映)
如上所述,我非常有信心我的行为和减速器都很好。我怀疑我忽略了 redux > 视觉流程中的某些内容。
以下是孤立的代码。我拿走了不相关的 jsx 等。
将状态映射到智能组件的 props:
export default connect( store => ( {
user: store.user ? true : false,
contacts: store.contacts
} ) )( ContactList )
智能组件
<Person person = { this.state.showingperson } />
person 属性设置通过:
showPerson( e ) {
e.preventDefault( )
const showingperson = this.props.contacts.object[e.target.id]
this.setState( { ...this.state, showingperson: showingperson } )
}
哑组件:
export const Person = ( { person } ) => {
return <div id="persontable" className="backdrop">
<div className = 'modal col l6 m12 s12 center'>
<p>Bio: { person.bio }.</p>
</div>
</div>
}
编辑:Reducer 代码:
从“时刻”导入时刻
const contactsReducer = ( state = { array: [], object: {} }, action ) => {
switch( action.type ) {
case 'UPDATE_FULFILLED':
case 'GETALL_FULFILLED':
// action.payload is an array of contacts resulting from a transformed firebase call
return action.payload ? action.payload : state
break
case 'CLEAR_FULFILLED':
return null
break
default:
return state
}
}
export default contactsReducer
【问题讨论】:
标签: javascript reactjs redux react-redux