如果我的措辞不正确,请原谅我。我现在正在学习 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,我实际上会在日志中看到我的参数值。我只是不明白为什么我不能将参数传递到调度中。
紫衣仙女
相关分类