请原谅我,如果我没有措辞这一权利。我现在正在学习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)。如果在操作中将filterQs记录在分派之外,则实际上我会在日志中看到我的参数值。我只是想不出为什么不能将参数传递给调度程序。
答案 0 :(得分:2)
尝试从
更改mapDispatchToProps
const mapDispatchToProps = {
filterUpdate,
getPosts
}
到
const mapDispatchToProps = dispatch => {
return {
filterUpdate: (params) => dispatch(filterUpdate(params)),
getPosts: (filters) => dispatch(getPosts(filters))
}
};