Показать сообщение отдельно
  #12 (permalink)  
Старый 16.07.2021, 09:45
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Ситуация получается более запутанной...
Сделал я тестик простенький и у меня все заработало без всяких предупреждений!

Хранилище
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)
	}
}

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 } from "mobx"

import test from '../store/test'

function Test() {
    //console.log(1, test.data.arr)
	const arr = toJS(test.data.arr)
    //console.log(2, test.data.arr)

	const renderItem = ({ item }) => (
	    <Text>{item.name}</Text>
	)

	return (
	    <View style={styles.container}>
    	    <View style={styles.container}>
    	        <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,
		backgroundColor: '#fff',
		alignItems: 'center',
		justifyContent: 'center',
	},
	tab: {
	    margin: 50
	}
})

export default observer(Test)

Все рисуется и так нормально... НО!
если убрать
const arr = toJS(test.data.arr)

Перестает работать добавление элементов.
Возвращаю эту строку - работает добавление.

А по предыдущей проблеме - сказал чтобы ребята начали искать у себя проблемы глубже...
Ответить с цитированием