как заменить массив ссылок на дерево состояний mobex - PullRequest
0 голосов
/ 20 ноября 2018

Как я могу подойти к повторному воспроизведению компонента с вновь извлеченными данными?

Что мне нужно сделать, это получить данные на основе выбранной модели.

Рассмотрим это, например,

const data1 = [
    {
        name: 'asd',
        id: '3'
    },

    {
        name: 'aa',
        id: '4'
    }
]
const data2 = [
    {
        name: 'sadasqw1212',
        id: '1'
    },

    {
        name: 'asokdos1111',
        id: '2'
    }
]

const MODEL = types.model({
    name: types.optional(types.string, ''),
    id: types.identifier
})

const testStore = types.model({
    searchResults: types.optional(types.maybe(types.array(MODEL)), []),
    selected: types.maybe(types.reference(MODEL))
})
    .actions(self => ({
        fetch(id) {
            const dat1 = data1.map((item) => MODEL.create(item))
            const dat2 = data2.map((item) => MODEL.create(item))
            self.searchResults = id === 1 ? dat1 : dat2
        },
        setSelected(item) {
            self.selected = item
        }

    }))


const App = inject('store')(observer(({store}) => {
    return (
        <div>
            <button onClick={() => store.fetch(1)}> 1</button>
            <button onClick={() => store.fetch(2)}> 2</button>
            {store.searchResults.map((item) => (
                <button onClick={() => store.setSelected(item)}>SET ({item.id} - {item.name})</button>
            ))}

            <br/>
            <br/>
            {store.selected &&<div>
                SELECTED
                {store.selected.id}
                <br/>
                {store.selected.name}
            </div>}
        </div>
    )
}));

const store = testStore.create();

console.log(store)
render(<Provider store={store}>
    <App/>
</Provider>, document.getElementById("root"));

Я продолжаю получать эту ошибку, которая блокирует меня как на 7 часов .... Может кто-нибудь указать мне правильный способ выполнения такой замены таблицы новыми данными?enter image description here

...