如果我的措辞不正确,请原谅我。我现在正在学习 React 并且在将参数传递给动作时遇到问题。这是操作:export const getPosts = filterQs => { return dispatch => { const apiUrl = wpApi.listPosts; if (filterQs) { apiUrl += "?" + filterQs; } // Actually get the posts dispatch(getPostsStarted()); axios.get(`${apiUrl}`) .then(response => { dispatch(getPostsSuccess(response.data)); }) .catch(error => { dispatch(getPostsFailure(error.message)); }); }}包含if (filterQs)的条件被跳过,因为在调度操作时它似乎实际上没有该参数。它在调度时仍然返回一个成功的响应,它只是不包括我需要的参数。这是我在组件中映射调度的位置:const mapDispatchToProps = { filterUpdate, getPosts}这是实际调用它的方法。changeHandler (event) { const checkedStatus = event.currentTarget.checked; const selectedTaxonomy = event.currentTarget.name; const termId = event.currentTarget.value; const paramsToSend = { checkedStatus: checkedStatus, selectedTaxonomy: selectedTaxonomy, termId: termId }; const filterUpdatePromise = new Promise((resolve, reject) => { this.props.filterUpdate(paramsToSend); resolve(true); }); // Run the filter query string format function only after the props have updated filterUpdatePromise.then(() => { const filterQs = this.formatNewFilterQuery(); getPosts(filterQs); }); }据我所知,正在执行 getPosts(filterQs) 。如果我在 action 的 dispatch 之外记录 filterQs,我实际上会在日志中看到我的参数值。我只是不明白为什么我不能将参数传递到调度中。
1 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
尝试改变你mapDispatchToProps的
const mapDispatchToProps = {
filterUpdate,
getPosts
}
到
const mapDispatchToProps = dispatch => {
return {
filterUpdate: (params) => dispatch(filterUpdate(params)),
getPosts: (filters) => dispatch(getPosts(filters))
}
};
添加回答
举报
0/150
提交
取消