передать наблюдаемые данные mobx в props

Использование mobx в проекте response-typescript. Этот класс устанавливает наблюдаемый массив с API выборки:

class MenuRepo {
  @observable menuItems?: IMenuModel[];//=[{Id:1,itemName:"asd",childItems:[]}];
  @action getItems(): void {
    fetch(`...`)
      .then((response: { value: IMenuModel[] }): void => {
        this.menuItems = [
          { Id: 1, itemName: 'test-item1', childItems: [] }
        ];
      });
  }

и я хочу отслеживать эти наблюдаемые данные в этом классе компонентов:

@observer
class Menu extends React.Component<{params?:IMenuModel[]}, {}> {
  render() {
    debugger
    var menuJSX : JSX.Element[] = this.props.params ? this.props.params.map((item:IMenuModel, i:number)=>{
      return (<li key={item.Id}>{item.itemName}</li>)
    }):[];
    return (...)

но params не определен. Я просмотрел несколько уроков по mobx & react, но не смог решить эту проблему.

и вот файл App.tsx:

import menuCodes from './components/Codes';
class App extends React.Component<null, null> {
  render() {
    return (
      <div className="App">
        <Menu params = {asd.menuItems}/>
      </div>
    );
  }
}
export default App;

person TyForHelpDude    schedule 19.02.2017    source источник


Ответы (1)


такое asd instanceof MenuRepo? Обратите внимание, что в первом рендеринге menuItems будет undefined, так как оно получает свое первое значение только после разрешения выборки, что должно произвести вторую рендеринг.

Обратите внимание, что App должно быть observer, поскольку это тот, который разыменовывает menuItems наблюдаемое. (Для получения дополнительной информации: https://mobx.js.org/best/react.html)

person mweststrate    schedule 13.03.2017
comment
На самом деле вы уже решили мою проблему со ссылкой на статью, которой вы поделились в твиттере. Спасибо :) - person TyForHelpDude; 14.03.2017