【发布时间】:2016-07-25 23:50:24
【问题描述】:
我正试图围绕在传递给组件的 prop 应该用于更改应用程序状态的情况下如何使用 redux。
我有一个工作示例here。
let Input = ({handleChange}) => (
<input type="text" onChange={handleChange('mySpecialInput')} />
)
let Text = ({message, color}) => (
<span style={{color}}>{message}</span>
)
let App = ({message, color, handleChange}) => (
<div>
<Text message={message} color={color} /> <br />
<Input handleChange={handleChange} />
</div>
)
class ConnectedApp extends React.Component {
constructor(props) {
super(props)
this.state = {
color: 'orange',
message: 'Hello World'
}
this.handleChange = this.handleChange.bind(this)
}
handleChange(id) {
return (event) => {
console.log(id)
if (id === 'mySpecialInput') {
this.setState({'color': event.target.value})
}
}
}
render() {
return (
<App
message={this.state.message}
color={this.state.color}
handleChange={this.handleChange} />
)
}
}
ReactDOM.render(
<ConnectedApp/>,
document.getElementById('react_example')
);
如何使用 redux 来处理像这样简单的事情?
【问题讨论】:
-
第二个例子不行吗?我不太明白你的问题。
-
@mjohnsonengr 第二个例子直接取自simplest-redux-example,刚刚更新,我想我明白了,但仍然没有渲染。
-
可能没有渲染,因为 App 没有收到 message 属性。
-
当您执行
mapStateToProps时,您实际上是在声明一组 props,react-redux 将传递给您的包装组件,例如应用程序。您的 mapStateToProps 仅定义一个颜色。如果您将其他道具传递给 ConnectedApp,它们将被转发给 App -
名称修改。 changeColor 定义了两次。
标签: javascript reactjs state redux