2016-08-24 3 views
3

Право знать У меня есть индексный файл, где я импортировать различные файлы с создателями действий для различных точек зрения:Можно ли импортировать все создатели действия во всех компонентах контейнера?

import generalActions from './generalActions' 
import vftActions from './vftActions' 
import shareActions from './shareActions' 
import codeFormActions from './codeFormActions' 
import signupActions from './signupActions' 

const actions = { 
    ...generalActions, 
    ...vftActions, 
    ...shareActions, 
    ...codeFormActions, 
    ...signupActions 
} 

export default actions 

А потом я импортировать индексировать действия, каждый раз, когда со всеми действиями:

import { connect } from 'react-redux' 
import { bindActionCreators } from 'redux' 
import actions from '../../redux/actions' 

function mapDispatchToProps(dispatch) { 
    return { 
     actions: bindActionCreators(actions, dispatch) 
    } 
} 

export default connect(null, mapDispatchToProps)(ContainerComponent) 

Сво ok, если я отделяю это в разных экспорте и импортирую только создателей действий, которые нужны моему контейнеру?

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

Как вы думаете, это лучший aproach?

+0

Похоже, что мой ответ был полезен для многих людей. Можете ли вы поддержать и одобрить его? – semanser

ответ

5

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

индексный файл для всех действий actions/index.js:

// just import actions from another files (modules) 
import * as notification from './notification' 
import * as friend from './friend' 
import * as profile from './profile' 

// export all actions as modules 
export { notification } 
export { friend } 
export { profile } 

И после этого в моем контейнере я импортировать только то, что мне нужно от actions/index.js:

import { modals, 
     signIn } from '../actions' 

При таком подходе вы получите полный контроль над тем, какие действия вам нужны для ваших контейнеров.

2

Импорт только действия, которые вам нужны, являются распространенным способом сделать это. Я не понимаю, почему вам нужно связать все действия в одном объекте.

Вы также можете использовать Namespaced импорта, как это:

import * as generalActions from './generalActions' 

в этом случае вам не нужно export default объекта действия, содержащий все generalActions вы можете просто export каждое действие.

Как правило, рекомендуется импортировать только то, что вы на самом деле используете.

+2

«Как правило, рекомендуется импортировать только то, что вы на самом деле используете». Почему? Это именно тот вопрос, который задают вопросы, поэтому было бы полезно разработать эффективные методы работы :-) –

Смежные вопросы