Я смог заставить это работать с промежуточным программным обеспечением "Monkeypatch", но должен быть лучший способ.
Сначала я создал функцию для исправления дочерней переменной. Эта функция принимает дочерний элемент, отправку и хранилище в качестве аргументов и возвращает обновленную дочернюю переменную с ключами для хранилища и отправки:
function routeStoreMiddleware (children, dispatch, store) {
return {
...children,
props: {
...children.props,
dispatch: dispatch,
store: store
}
}
}
Затем я просто обновил компонент, который уже имеет доступ к диспетчеризации и хранилищу, чтобы использовать функцию промежуточного программного обеспечения:
class App extends Component {
render() {
return (
<div>
{ routeStoreMiddleware(children, dispatch, store) }
</div>
);
}
}
Поскольку функция routeStoreMiddleware с неудачным названием просто возвращает обновленный дочерний объект, она по-прежнему работает.
Теперь я могу отправлять события и отображать данные из компонента ExampleRoute.
импортировать React, {Компонент} из «реагировать»; импортировать {myAwesomeActionCreator} из '../actions.js'
export class Example extends Component {
render () {
const { dispatch, store } = this.props
return (
<button onClick={ () => {
dispatch(myAwesomeActionCreator())
}}>{ store.thingName }</button>
);
}
}
Ура!
Обратите внимание: я много читал здесь о том, как правильно сделать промежуточное ПО в редуксе, но у меня еще не было времени, чтобы понять это полностью. Есть лучший способ, чем я сделал здесь.
person
Grant Eagon
schedule
20.01.2016