javascript - Actions 必须是 React/Redux 中的普通对象吗?

标签 javascript reactjs redux axios

我遇到的问题是通过 Action 创建者传递数据时 Action 必须是普通对象。基本上我试图通过单击按钮来捕获用户输入,并且根据单击的按钮( View )event.target.innerHTML传递给操作创建者 fetchDataAsync(view) 然后通过 axios 执行 GET 请求并根据选择的 View 进行调度。

不过,我对 Redux 还很陌生,我不确定我在这里做错了什么。我之前见过在 Action 创建器内执行异步 Action ...

与 Redux 连接的组件:

class ViewSelector extends Component {
  selectView(event) {
    this.props.fetchDataAsync(event.target.innerHTML);
  }

  render() {
    return (
      <nav>
        <button onClick={this.selectView.bind(this)}>VIEW ALL</button>
        <button onClick={this.selectView.bind(this)}>VIEW LAST WEEK</button>
        <button onClick={this.selectView.bind(this)}>VIEW LAST MONTH</button>
      </nav>
    );
  }
}

function mapStateToProps(state) {
  return {
    view: state.view
  };
}

export default connect(mapStateToProps, actions)(ViewSelector);

基于event.target.innerHTML进行调度的 Action 创建者:

export function fetchDataAsync(view) {
  return dispatch => {
    dispatch(fetchData());

    axios.get(DATA_URL)
    .then(res => {
      dispatch(fetchDataSuccess(res.data));
      if (view == 'VIEW LAST WEEK') {
        dispatch(lastWeekData(res.data));
      } else if (view == 'VIEW LAST MONTH') {
        dispatch(lastMonthData(res.data));
      }
    }).catch(err => {
      dispatch(fetchDataFailure(err));
    });
  };

}

如有任何建议,我们将不胜感激。或者,如果您认为有一种更有效的方法来捕获用户输入并将其传递给操作创建者......我很想听听更多信息!

最佳答案

您需要安装 redux-thunk 才能使用异步操作。然后像这样创建你的商店

import thunk from 'redux-thunk';
const store = createStore(YOURREDUCER, applyMiddleware(thunk));

关于javascript - Actions 必须是 React/Redux 中的普通对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39693161/

相关文章:

javascript - react native : How to create a menu brought up from bottom?

javascript - 使用 KnockoutJS 的项目选择 MVC View

javascript - 计算下拉列表中行星的重量并将其打印到输入类型

javascript - reactjs-toolbox 单选按钮组不改变

javascript - 列表中 React 元素的最佳键是什么?

javascript - React JS 中动态加载图像

javascript - 为什么 console.log(3>2>1) 输出错误?

javascript - 创建一个新数组并在一行中将其插入其中 - Javascript OOP

javascript - 如何在特定条件下使用react隐藏和显示

reactjs - 输入字段失去对每种字符类型的关注 - react