Это нормально для одновременного вызова нескольких действий? - PullRequest
0 голосов
/ 20 января 2019

У меня есть несколько редукторов, и мне нужно отправить отдельные действия для каждого из них одним щелчком мыши, поэтому я сделал следующее:

<TouchableOpacity
    style={[styles.button, styles.edit]}
    onPress={()=>{
       this.props.toggleCurrentTask(this.props.task);
       this.props.triggerUpdating(id);
    }}
>
   <Text>Edit</Text>
</TouchableOpacity>

, но действие toggleCurrentTask не сработало, и я некоторое время боролся, в конце концов, просто замена их решила мою проблему! как это:

onPress={()=>{
   this.props.triggerUpdating(id);
   this.props.toggleCurrentTask(this.props.task);
}}

Так что я подумал, что, возможно, вызывать два действия одновременно - плохая практика. Если это так, что я должен делать вместо этого?

1 Ответ

0 голосов
/ 20 января 2019

Это нормально, но вы также можете заставить разные редукторы реагировать на одно и то же действие (тип): в вашем примере редуктор, хранящий состояние updating, может изменить свое состояние при отправке действия toggleCurrentTask:

const TOGGLE_CURRENT_TASK = 'task/TOGGLE_CURRENT_TASK';

/* update reducer */

const updatingState = {
    isUpdating: false
}

const updatingReducer = (state = updatingState, action) => {
    switch (action.type) {
        case TOGGLE_CURRENT_TASK:
            return {
                ...state,
                isUpdating: true
            }
    }
}

/* task reducer */
const taskState = {}

const taskReducer = (state = taskState, action) => {
    switch(action.type) {
        case TOGGLE_CURRENT_TASK:
            return {
                ...state,
                activeTasks: action.task
            }
    }
}

IMO - это делает ваш компонент React чище и лучше масштабируется, представьте, что вам нужно выполнить пять различных действий в обработчике событий вместо двух.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...