React:我不能将参数传递给动作吗?

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


回首忆惘然
浏览 147回答 1
1回答

紫衣仙女

尝试改变你mapDispatchToProps的const mapDispatchToProps = {    filterUpdate,    getPosts}到const mapDispatchToProps = dispatch => {    return {        filterUpdate: (params) => dispatch(filterUpdate(params)),        getPosts: (filters) => dispatch(getPosts(filters))    }};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript