@hadaev_ivan

React-router 2.0.0. Как отослать запрос для загрузки данных для ребенка только после отца?

const Route = {
  path: '/',
  component: require('blabla')
  onEnter: function(state, replace, callback){
     API.getInfo()
        then(function(response){
             callback();
        }) 
  },
  getChildRoutes(location, callback) {
    // сюда заходит раньше чем в onEnter для отца если путь подразумевает что надо искать ребенка '/child' 
    // но мне это не подходит, потому что мои роуты должны строится исходя из данных которые получит отец, 
   //как это решить?
      require.ensure([], function (require) {
      callback(null, [
          {
              path: '/child'
           }
      ])
    })
  }
  • Вопрос задан
  • 272 просмотра
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Перенесите всю логику в onEnter.
А если нужны доп. параметры - передайте их в переменных функции.
Также, можно сохранить в переменных класса для вызова их из другой функции.
Ответ написан
Есть решение на скорую руку, надеюсь поможет. Но я бы как-нибудь по-другому сделал.

function createSomeRoute() {
  const parentPromise = false;
  const Route = {
    path: '/',
    component: require('blabla')
    onEnter: function(state, replace, callback){
       parentPromise = API
          .getInfo()
          .then(function(response){
               callback();
               return response
          }) 
    },
    getChildRoutes(location, callback) {
      // сюда заходит раньше чем в onEnter для отца если путь подразумевает что надо искать ребенка '/child' 
      // но мне это не подходит, потому что мои роуты должны строится исходя из данных которые получит отец, 
     //как это решить?
        parentPromise.then((someData) => {
          require.ensure([], function (require) {
          callback(null, [
              {
                  path: '/child'
              }
          ])
        } )
      })
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы