Я добавил возможность «понравиться» сообщению. И вдруг реакция-родная ползает по улитки. Im новый, чтобы реагировать, поэтому на самом деле не уверены, где и когда правильно установить состояние.Обновление состояния в реале-нативного принятия навсегда
Как должным образом привязать возможность понравиться строке в таблице listView?
Heres код ...
'как' текст, чтобы нажать на это ....
<Text onPress={this.likePost.bind(this, feeditem.post_id)}>{feeditem.likes} likes</Text>
Тогда функция 'симпатия' это ...
likePost(id){
if(this.state.feedData!=null){
var d = this.state.feedData;
// Find row by post_id
var ix = d.findIndex(x => x.post_id===id);
// Only set state if user hasn't already liked
if(d[ix].you_liked==0){
// Mark as liked, and increment
d[ix].you_liked=true;
d[ix].likes = parseInt(d[ix].likes)++;
// Set the state after liking
this.setState({
feedData: d,
feedList: this.state.feedList.cloneWithRows(d)
});
}
}
}
Он работает, и он корректно обновляет данные и показывает в инструментах dev просто отлично. Однако визуализация нового состояния визуально занимает минуту.
Я обновляю состояние неправильно? Какова стоимость для setState? Я думал, что реакция должна была просто повторно отобразить изменения, которые он видит в виртуальной DOM. Почему же это похоже на его рендеринг всего моего списка. И почему более 1 минуты времени загрузки? (явная утечка памяти где-то)?
Кроме того, возможно ли просто увеличивать целое число на «DOM» без запуска повторного рендера?
Цените ответ, но это не мой вопрос. Это мое плохое, потому что перечитывая мой вопрос, я вижу, как вы это восприняли ... Но я уже знаю, как передать идентификатор строки, и я даже не делаю этого в этом случае. Я нажимаю на текстовый элемент внутри строки. Во всяком случае .... мой вопрос был не в том, как это сделать, так было, как это сделать, чтобы он не занимал так долго рендеринга. Обновления вашего ответа отображаются в том же месте, где я обновляю его. (в функции onPress). Вопрос в том, почему переопределение занимает более 100 кадров. Кроме того, я не делаю копию состояния в моем примере? – KyleK