- Вам не нужно создавать представление для доступа к вашим необработанным данным, вы можете напрямую использовать реквизит:
inject(states => ({
data: states.myModel.data
}))
Вам не нужно использовать
observer
, если вы используете
inject
.MyComponent будет хорошо наблюдать за тем, что находится внутри инъекции:
inject(states => ({
data: states.myModel.data
}))(MyComponent)
В этом случае вы наблюдаете массив, который является ссылкой.Если вы обновите элементы массива, сам массив не изменится, поэтому MyComponent не будет перерисован.Вы можете наблюдать длину массива, таким образом, если длина изменяется, MyComponent перерисовывается, но это полезно только при добавлении или удалении элементов из массива:
inject(states => ({
data: states.myModel.data,
length: states.myModel.data.length
}))(MyComponent)
Наконец, если вы хотите наблюдать изменения в элементах массива, даже если длина не меняется, вам нужно наблюдать за элементами внутри:
inject(states => ({
data: states.myModel.data,
length: states.myModel.data.length
}))(MyComponent)
const MyComponent = ({ data }) => (
<div>{data.map(item => (
<MyDataItem item={item} />
))}
</div>
)
inject((states, props) => ({
foo: props.item.foo
}))(MyDataItem)