Это анти-шаблон для отправки действий из файла действий, на который подписаны из другого файла редуктора? - PullRequest
0 голосов
/ 25 июня 2019

Обычно в моих проектах Redux у меня есть файлы действий и редукторов, которые идут парами. Так что в моей папке actions у меня будет posts.js, а в папке reducers у меня также будет posts.js. Файл действий posts обычно просто отправляет типы действий, на которые подписан файл редуктора сообщений.

Но теперь мне нужно отправить тип действия из файла действия posts, который подписан из файла редуктора authors. Это нормально или считается анти-паттерном?

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Это вовсе не анти-паттерн.Это хорошая возможность повторного использования кода и особенно полезная для обработки ошибок.

Рассмотрим следующий пример:

posts.js

import { GET_POSTS } from "./actions/types"
import { setErrors } from "./actions/errors"
import axios from "axios"

export const getPosts = () => {
   return (dispatch) => {
       axios.get("/api/posts")
            .then((res) => {
                dispatch({
                   type: GET_POSTS,
                   payload: res.data
                })
            })
            .catch((errors) => {
                dispatch(setErrors(errors.response.data))
            }
   }
}

errors.js

const setErrors = (errors) => {
   return {
      type: SET_ERRORS,
      payload: errors
   }
}

Поэтому вместо определения совершенно нового post-связанные ошибки действие внутри posts.js , имеет смысл просто импортировать существующее, которое подписано на ваш редуктор ошибок (если есть).То же самое можно сказать о совместном использовании ваших действий author и post .

0 голосов
/ 25 июня 2019

Это зависит от того, какой шаблон дизайна вы используете.Как вы можете иметь все свои действия в одном файле.Для вашего случая вы можете экспортировать создателя действия из одного файла и просто импортировать его туда, где вы хотите того же создателя действия.Таким образом, вы можете иметь такую ​​же синхронизацию между создателями действий и редукторами, о которой вы говорите.

...