Reactjs 删除标记文本时出现意外行为

Reactjs 删除标记文本时出现意外行为,reactjs,react-native,react-state,Reactjs,React Native,React State,在我的项目中,我曾经从用户那里获得不同颜色的变体 代码如下: 颜色 { this.setStateprevState=>{ 颜色:标签 },=>this.handlevariant变化; }} onTagPress={index,tagLabel,event,deleted=>console.logindex,tagLabel,event,deleted?deleted:未删除 } containerStyle={styles.tagContainer} inputStyle={{backgro

在我的项目中,我曾经从用户那里获得不同颜色的变体

代码如下:

颜色 { this.setStateprevState=>{ 颜色:标签 },=>this.handlevariant变化; }} onTagPress={index,tagLabel,event,deleted=>console.logindex,tagLabel,event,deleted?deleted:未删除 } containerStyle={styles.tagContainer} inputStyle={{backgroundColor:white}} renderTag={{tag,index,onPress,deleteTagOnPress,readonly}=> {''}{tag} } /> 现在,在运行project之后,我添加了一些标记。标签添加成功。然后我继续添加另一个标签,但拼写不正确,所以我删除了第一个字符,但以前的标签也自动删除

另一个问题是,如果我想在添加一些标记后删除该标记,我将无法删除该标记

以下是问题gif:

请帮我这里出了什么问题


注意:只有当我使用状态值作为初始标记时,才会发生此问题。如果我将initialTags保留为空白数组,那么一切都正常工作。

问题在于react和react native tag如何工作。假设您有两个标记,并且正在输入文本。当您点击backspaces删除文本中尚未标记的第一个字符时,它会自动从数组中弹出第二个标记。由于您正在设置状态,因此将重新渲染组件,从而完全删除标记

您可以通过使用shouldComponentUpdate并返回false来修复此问题

shouldComponentUpdate(nextProps, nextState) {
   return false;
 }

我建议为标记使用一个单独的组件,并在表单中使用该组件,并且在触发onChangeTags时有一个更新表单的回调。

Heyy..,我在代码中添加了shouldComponentUpdate,但没有更改任何内容。请告诉我更多关于我必须把这个方法放在哪里?目前,我已经在我的屏幕中添加了这个方法,我的表单当前可用。很抱歉,基本上你的shouldComponentUpdate应该返回false。这样可以确保组件在不需要时不会更新。请检查我的最新答案谢谢你非常非常感谢。我照你说的做了,做得很好。你让我当了老板。很高兴,我能帮上忙!