Блок кода функции реагирования возврата для диспетчерских действий всегда пропускает и ничего не возвращает - PullRequest
0 голосов
/ 23 февраля 2019

Я следую учебному пособию по React-Redux, создаю таблицу с данными, при щелчке записи появляется модальное окно «Правка», после редактирования в модальном окне нажмите «Отправить», чтобы вызвать API для обновления данных.но функция отправки обратного вызова не работает.

myTable.js: кнопка ниже для вызова модального окна для редактирования

<button className="btn-ghost-dark" onClick={(e) =>this.props.loadModalData(rowInfo.row._id, editable=false, e)}>
                                    <i className="fa fa-search fa-md"></i></button>

modalActions.js

export function loadModalData(oid, editable,e) {
e.preventDefault();
return function (dispatch) {
    dispatch(beginAjaxCall());
    fetch(`http://localhost:8080/api/inv/${oid}`)
        .then(rec => rec.json())
        .then(mdata=> {
            dispatch(mydetailsModal(mdata, editable));
        }).catch(error => {
        throw(error);
    });
};}
export function saveModalData(fulldata) { \\ actually call api to save data
console.log("this is called");
debugger; \\ the program run to here
return function (dispatch)  {
    debugger;  \\  seems never to be here, dont know why?
    console.log("never called");
};

}

detailsModal.js

import {saveModalData} from "../actions/modalActions";
class detailsModal extends Component {
constructor(props) {
    super(props);
    this.handleSubmit = this.handleSubmit.bind(this);
}

handleSubmit(mdata, e) {
    e.preventDefault();
    ...populate some formData..;

    saveModalData(formData);
}

render(){
    return(
        <div>
            <div>
                <ReactModal>
                  <form method="post" encType="multipart/form-data" 
                        onSubmit={(e) => this.handleSubmit(this.props.mdata, e)}>
                  .....
                  <button type="submit" hidden={!this.props.editable} > Submit </button>
                </ReactModal>
            </div>
        </div>
    )
}

}

вопрос в функции saveModalData, часть функции возврата, кажется, никогда не выполняется, что-то не так с моим кодом, я по сравнению с функцией loadModalData не могу найтипервопричина, новичок в ES / React / Javascript: (

1 Ответ

0 голосов
/ 23 февраля 2019

Я думаю, проблема в том, как вы звоните saveModalData(formData);.В вашем случае вы хотите вызвать функцию в возврате, поэтому вам нужно будет сделать saveModalData(formData)(); Это называется currying.Посмотрите, как ведет себя приведенный ниже пример.

function outside(){
    console.log('hello from outside');
    return function(){
        console.log('hello from inside')
    }
}

outside(); // without currying
console.log('-----')
outside()() // with currying
...