Необходимо добавить функцию обратного вызова, если действие завершается успешно. Его не работает (реагируют родной и редукс) - PullRequest
0 голосов
/ 25 января 2020

Я загрузил данные массива на сервер, используя ax ios. Но после завершения загрузки (ie. В случае успеха) я хочу очистить массив или добавить некоторые элементы в массив. Всё работает, но после того, как это успешно, как я могу сделать что-то с массивом, оно не работает в следующем коде. Спасибо.

код:

var testArray = [];

uploadData = () => {
    this.props.uploadataToServer(testArray);

    if (this.props.uploadStatus == true) { //this code is not working
        testArray = [];
    }
}

render() {
    return(
        <View>
            <TouchableOpacity onPress={() => this.uploadData()}>
                <Text>Upload data</Text>
            </TouchableOpacity>
        </View>
    )
}

const mapStateToProps = (state) => {
    const { uploadStatus } = state.Upload;
    return { uploadStatus };
}

действие:

export const uploadataToServer = (testArray) => {
    return (dispatch) => {
        axios({
            url: testUrl,
            data: {
                upladArray: testArray
            }
        }).then(response => {
            if(response.data.status == true) {
                dispatch({
                    type: UPLOAD_TO_SERVER,
                    dataStatus: response.data.status,
                })
            }
        })
    }
}

редуктор:

switch(actions) {
    case UPLOAD_TO_SERVER:
        return { uploadStatus: actions.dataStatus}
}

1 Ответ

0 голосов
/ 25 января 2020

Вам необходимо зарегистрировать componentDidUpdate , поскольку вы будете получать обновленные реквизиты в это время

componentDidUpdate(prevProps) {
  if (prevProps.uploadStatus !== this.props.uploadStatus) {
    if (this.props.uploadStatus == true) {
        testArray = [];
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...