mam jeden składnik nadrzędny zwany App.js
:ReactJS + Redux: jak skonstruować twórców akcji do każdego komponentu?
...
render() {
return (
<div>
{React.cloneElement(this.props.children, this.props}
</div>
)
}
...
function mapDispatchToProps(dispatch) {
return (
actions: bindActionCreators(actions,
)
}
export default connect(
...,
mapDispatchToProps
)(App)
I rekwizyty będą przekazywane do każdego komponentu. Chciałbym, aby każdy komponent miał swoich twórców akcji, ale jak mogę powiązać wszystkich twórców akcji w jeden, aby twórcy akcji mogli przejść z poziomu App.js
? Wszelkie inne sugestie byłyby również doceniane, aby twórcy akcji mieli dostęp do każdego komponentu.
Oto struktura tej pory:
ComponentOne
..actions.js //action creators
..ComponentOne.js
ComponentTwo
..actions.js //action creators
..ComponentTwo.js
App.js
actions.js//should I compile all the action creators here?
I każdy actions.js
będzie wykonana tak:
let actions = {
logSayings() {
...
}
}
export default actions
Dziękuję z góry i będzie upvote/zaakceptować odpowiedź.
Redux Konfigurowanie
store.js
import { applyMiddleware, compose, createStore } from 'redux'
import rootReducer from './reducers/rootReducer'
import logger from 'redux-logger'
import thunk from 'redux-thunk'
let finalCreateStore = compose(
applyMiddleware(thunk, logger())
)(createStore)
export default function configureStore(initialState = {articles: []}) {
return finalCreateStore(rootReducer, initialState)
}
actions.js
import { hashHistory } from 'react-router'
import { browserHistory } from 'react-router';
let actions = {
updateBar(status) {
return {
type: 'UPDATE_BAR',
indicator: status
}
}
}
export default actions
homeReducer.js
const homeReducer = function(articles = [], action){
switch(action.type){
case 'UPDATE_BAR':
return {
indicator: action.indicator,
}
default:
return articles
}
}
export default homeReducer
index.js
import React from 'react';
import {render} from 'react-dom';
import configureStore from '../../redux/store'
import { Provider } from 'react-redux'
import { Router, Route, IndexRoute, hashHistory } from 'react-router'
import App from './components/App'
import Home from './components/Home/Home'
let initialState = {
}
let store = configureStore(initialState)
render(
<div>
<Provider store={store}>
<Router history={hashHistory}>
<Route
component={App}
path='/'
>
<IndexRoute component={Home}/>
</Route>
</Router>
</Provider>
</div>,
document.querySelector('.wrapper')
)
Dlaczego chcesz mieć twórców akcji dla wszystkich komponentów potomnych? dlaczego nie możesz scentralizować swoich działań w aplikacji mapDispatchToProps? – Robsonsjre
@Robsonsjre Zrobiłem to, ale doszło do punktu, w którym to było zbyt skupione. Zbyt wielu twórców akcji i zawsze będę musiał przeglądać te nieistotne i znaleźć to, czego potrzebuję. Posiadanie twórców akcji dla danego komponentu pozwala mi szybciej podejrzeć działania twórców akcji. –