通过react-redux动作有效负载传递输入值?

时间:2018-10-01 14:33:53

标签: react-redux

export class SearchBar extends React.Component {
  render() {
    return (
      <div>
        <input onChange={this.props.onSearchTermChange} />
      </div>
    );
  }
}

const mapDispatchToProps = dispatch => {
  return {
    onSearchTermChange: () =>
      dispatch({
        type: "SEARCHTERMCHANGE",
        payLoad: {}
      })
  };
};

基本上,当输入发生更改时,我想调用“ onSearchTermChange”操作并将输入的值传递给reducer,但是我不知道如何从onSearchTermChange操作访问输入值。

1 个答案:

答案 0 :(得分:2)

您必须使用event.target.value

<input 
  onChange={ (e) => this.props.onSearchTermChange(e.target.value)} 
  value={this.props.value} 
/>

您的动作创建者现在将是

const mapDispatchToProps = dispatch => {
  return {
    onSearchTermChange: (value) =>
      dispatch({
        type: "SEARCHTERMCHANGE",
        payLoad: value
      })
  };
};

和您的减速器

case "SEARCHTERMCHANGE":
  return {
    ...state,
    value: action.payLoad
  }

最后,您需要将自己的价值导入道具。

const mapStateToProps = (state) => ({
   value: state.value,
})