в один провайдер добавлять или у каждого должен быть свой, обернутый в роут?
Провайдер чего?
Контекст
А что за сервисы?
Так запросы идут при монтировании компонента и сохраняются через редакс в стэйте, мне по сути нужно просто передать сервис в компоненты использовать в юзэффект
И при чем тут (и зачем) контекст-провайдер?
table-container.js const mapDispatchToProps = (dispatch, { speedService }) => { return { fetchSpeed: fetchSpeed(speedService, dispatch), handleClick: (name) => dispatch(openModalGosbs(name)) }; }; export default compose(withSpeedService(), connect(mapStateToProps, mapDispatchToProps))(TableContainer); index.js ReactDOM.render( <Provider store={store}> <SpeedServiceProvider value={speedService}> <Router> <App /> </Router> </SpeedServiceProvider> </Provider> , document.getElementById('root')); with-speed-service.js const withSpeedService = () => (Wrapped) => { return (props) => { return ( <SpeedServiceConsumer> { (speedService) => { return (<Wrapped {...props} speedService={speedService}/>); } } </SpeedServiceConsumer> ); }}; export default withSpeedService;
фигасе а зачем функция fetchSpeed принимает speedService в аргументах?
actions.js const fetchSpeed = (SpeedService, dispatch) => () => { dispatch(speedRequested()); SpeedService.getSpeed() .then((data) => dispatch(speedLoaded(data))) .catch((err) => dispatch(speedError(err))) };
я понимаю, как оно используется. только зачем? подразумевается, что если передать massService, то fetchSpeed будет фетчить массу?
почему SpeedService передаётся, а speedRequested, speedLoaded и speedError — нет?
а зачем, если все это отрабатывает через экшены?
Ну я и спрашиваю, почему одно передаётся, а второе — нет. Потому что структурно что одно, что другое — просто функции
я об этом не думал, но получается да. Но это не отменяет вопроса, если мне нужно несколько сервисов передать
без разницы — как удобнее, так и делай
так я и спрашиваю, как принято? и вообще, провайдеры в роуты пихают?
принято не заводить контексты для таких целей. при необходимости провайдеры можно просунуть где угодно. обычно в приложении есть только рутовые провайдеры
Вместо провайдеров сервисов я бы через extra argument передал бы апишку в санки
а если я добавлю все сервисы в один и просто буду передавать название метода в экшены, тогда один провайдер останется
подробнее где почитать? я ж нуб
В доке redux-thunk Injecting a Custom Argument
Обсуждают сегодня