【发布时间】:2016-12-20 07:30:21
【问题描述】:
我正在使用 Redux 和 React 从运行良好的 Web 服务加载数据。我想在 UI 中进行基于非 Web 服务的小更改以响应操作。一个简化的例子:
class SmartComponent extends React.Component {
handleClick = (e) => {
// how to best handle a simple state change here?
}
render() {
const { displayMessage } = this.props
return (
<DumbComponent message={displayMessage}/>
<button onclick={this.handleClick}>Change Message</button>)
}
}
const mapStateToProps = state => {
// state variables linked in the reducer
}
export default connect(mapStateToProps)(SmartComponent)
let DumbComponent = ({ message }) => {
return ({message})
}
如果我修改SmartComponent中的状态,例如使用this.setState,SmartComponent的props将不会自动更新。我相信直接修改SmartComponent的props是一种React反模式。更新DumbComponent 中的消息以创建动作并将其链接到reducer 的最佳方法是什么?对于简单的消息更改来说,这似乎有点矫枉过正。
【问题讨论】: