Javascript React本机平面列表渲染多次

Javascript React本机平面列表渲染多次,javascript,react-native,Javascript,React Native,正如我从许多帖子中看到的,关于平面列表多次渲染存在一个巨大的问题,并导致了一些问题。这真的很烦人,到目前为止我找不到任何解决办法,我想很多人都有同样的情况 这是代码,所以当我发出警报而不是看到一个值时,我会看到包含undefined..undefined..real value..undefined的不同值。我也可以这样描述它,当我只放置1个元素(比如{item.message})时,它会呈现双精度,并在。。就像一些奇怪的渲染一样,所以当我在某个东西上添加press事件时,我没有在press事件

正如我从许多帖子中看到的,关于平面列表多次渲染存在一个巨大的问题,并导致了一些问题。这真的很烦人,到目前为止我找不到任何解决办法,我想很多人都有同样的情况

这是代码,所以当我发出警报而不是看到一个值时,我会看到包含undefined..undefined..real value..undefined的不同值。我也可以这样描述它,当我只放置1个元素(比如{item.message})时,它会呈现双精度,并在。。就像一些奇怪的渲染一样,所以当我在某个东西上添加press事件时,我没有在press事件中获得适当的警报值

如何解决这个平面列表渲染问题

render(){
        return(
            <View>
                <FlatList
                data={this.state.messages}
                renderItem={({item}) =>

                    <View key={item.id}>

                        <Text> {item.sender} </Text>
                        <TouchableOpacity onPress={() => alert(item.id)} >
                            <Text>{item.message} {item.id}</Text>
                        </TouchableOpacity>

                    </View>

                    }
                />
            </View>
        );
    }
render(){
返回(
{item.sender}
警报(item.id)}>
{item.message}{item.id}
}
/>
);
}

奇怪,但我解决了这个问题,也许很多人在平面列表渲染方面也有类似的问题。所以问题是由后端造成的

在发送到react native之前,我在后端创建了一个数组,我是这样做的:

 $new = new Collection();

 $new[] = array('message' => $message->message);
 $new[] = array('id' => $message->id);
 $new[] = array('sender' => 'Sender: System');

return $new;
在我将数组设置为本地后,我尝试在flatlist中进行渲染。我注意到它渲染的数量与我添加新数组()的数量一样,因此我通过执行以下操作修复了该问题:

$new[] = array('message' => $message->message, 'key' => strval($message->id), 'sender' => 'Sender: System');

希望它能帮助一些其他人谁是类似的代码和问题

我不确定,但似乎(就我而言)
renderItem将呈现所有项目&取决于传递给
data={this.state.messages}的数据数组中有多少元素
整个列表将再次重新呈现。

没有人知道如何解决它:(这个问题很难理解。你能发布你看到的错误的屏幕截图吗?我没有看到任何错误,我解释道。当FlatList渲染时,我需要看到1个精确的值,但是,它渲染了多次,所以我看到一些未定义的值,例如..因此我无法正确处理press事件..关于它有很多帖子。)这个平面列表渲染问题。我今天要做的就是,一个GIF(问题的现场演示)能说出上千个单词。