Сообщение от Alexandroppolus
|
А уж если такое не поможет - менять массив иммутабельно, то есть вместо test.data.arr.push(newItem) делать
test.data.arr = [...test.data.arr, newItem]
|
А вот такое сработало!
import {makeAutoObservable} from 'mobx'
class Test {
data = {
arr: [
{id: '0', name: 'Item 0'},
{id: '1', name: 'Item 1'},
{id: '2', name: 'Item 2'},
]
}
constructor(props) {
makeAutoObservable(this)
}
add(obj) {
//this.data.arr.push(obj)
this.data.arr = [...this.data.arr, obj]
}
}
export default new Test()
С этим работает и так.
import React from "react"
import { StyleSheet, Text, View, Button, FlatList } from 'react-native'
import { observer} from 'mobx-react-lite'
import { toJS, runInAction } from "mobx"
import test from '../store/test'
function Test() {
const renderItem = ({ item }) => (
<Text>{item.name}</Text>
)
return (
<View style={styles.container}>
<View style={styles.tab}>
<Button
title='Add'
onPress={add}
/>
</View>
<FlatList
data={test.data.arr}
renderItem={renderItem}
keyExtractor={item => item.id}
/>
</View>
)
function add() {
const l = test.data.arr.length
test.add({
id: l.toString(),
name: 'Item ' + l
})
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
color: '#000',
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
tab: {
margin: 70
}
})
export default observer(Test)