В настоящее время я делаю приложение, использующее реагирующую натуру с реагирующим нативным материалом для моего сборщика.Проще говоря, мое приложение предназначено для магазина или чего-то еще, так что вы можете add items
, remove items
(CRUD), и я хочу, чтобы мой сборщик был в курсе моего элемента в базе данных AsyncStorage.
Все в порядкено мне пришлось заново открыть приложение, чтобы получить новый элемент, который я только что добавил с помощью функции «добавить элемент» (или навигации).Я использую экспо, реагирующая навигация.
Вот мое приложение: https://ibb.co/qF3vjTt
Вот моя навигация "Добавить элемент": https://ibb.co/jkdSh04 Всякий раз, когда я нажимаю ОК (первый хорошо, не возражаю против второго), он добавит элемент в БД, но значение моего выбора не обновляется.https://ibb.co/Mhtrqkd Как я уже упоминал ранее, мне пришлось заново открыть приложение, чтобы оно обновлялось в значении выбора.
Вот мой js-код "add items" (снова. Он работает для добавленияitem)
tambah = async () => {
let data = {
nama: this.state.namaBarang,
harga: this.state.harga,
tipe: this.state.tipe
};
let value = await AsyncStorage.getItem(data.nama.toLowerCase());
if (value != null) return alert("Barang sudah ada!");
await AsyncStorage.setItem(data.nama.toLowerCase(), JSON.stringify(data));
this.props.navigation.goBack();
alert(`${data.nama} berhasil ditambahkan.`);
};
Вот код JSX
<Button title="OK" onPress={this.tambah} />
Вот код моей основной вкладки
constructor(props) {
super(props);
this.state = { daftarBarang: [] };
}
loadBarang() {
const data = AsyncStorage.getAllKeys().then(keys => {
const stop = keys.length;
const index = keys.toString().split(",");
for (let i = 0; i < stop; i++) {
this.state.daftarBarang[i] = { value: index[i] };
}
});
}
// ......
return (
<Dropdown onPress={this.loadBarang()} label="Pilih Produk..." data={this.state.daftarBarang} />
// ......
);