Передать магазин mobx и реквизит для работы

У меня есть компонент React, который вызывает функцию, и мне нужно передать введенное хранилище mobx и реквизиты компонентов в эту функцию.

const Component = inject("store")(observer(({store, props}) => {
   return (
       <div>
          {_someRenderFunction(store, props)}
      </div>
   );
}));

Он используется в такой функции

function _someRenderFunction(store, props) {
   let data = store.data;
   const { cookies } = props;
   ...
}

Но я получаю сообщение об ошибке Cannot read property 'cookies' of undefined

Как я могу передать атрибуты магазина и компонентов в _someRenderFunction?


person Fripo    schedule 29.11.2017    source источник


Ответы (1)


Проблема в этой строке:

({store, props}) => {};

Ваш компонент получает только реквизиты, поэтому основное определение будет таким:

(props) => {}

Inject дает вам ваш введенный магазин внутри заданных реквизитов. Итак, что вы получите:

const props = { store: STORE_INSTANCE }

С помощью деструкции объекта вы можете извлекать свойства из реквизита. Так что это тоже сработает:

({ store }) => {}

Здесь вы извлекаете магазин недвижимости из своего реквизита. но в вашем примере вы также извлекаете реквизиты свойств из реквизитов. Итак, в вашем случае реквизит должен выглядеть так:

const props = { store: STORE_INSTANCE, props: PROPS_OBJECT }

Это не то, что вам нужно. Так что в данном случае разрушение объекта - это не то, что вам нужно. Следующий код должен работать:

const Component = inject("store")(observer((props) => {
   return (
       <div>
          {_someRenderFunction(props)}
      </div>
   );
}));

function _someRenderFunction(props) {
   const { cookies, store } = props;
   let data = store.data;
   ...
}
person Daniel    schedule 29.11.2017