Javascript Dom崩溃反应选择选项

Javascript Dom崩溃反应选择选项,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,当包含三个插值(如果其中一个是条件插值)时,React DOM停止工作 这是一把小提琴: 更改的值会导致NotFoundError崩溃:未找到节点 它在React 15上运行良好,这只发生在React 16.2上,这绝对是一个奇怪的问题 如果我将您的{isSelected&&(Y)}替换为{isSelected?'(Y):“}没有问题。但在后一种情况下,输出总是一个字符串 如果在false和字符串值之间更改的子项,则React似乎不高兴重新渲染。也许DOM协调中有一个新的bug 此外,如果您的目

包含三个插值(如果其中一个是条件插值)时,React DOM停止工作

这是一把小提琴:

更改
的值会导致
NotFoundError崩溃:未找到节点


它在React 15上运行良好,这只发生在React 16.2上,这绝对是一个奇怪的问题

如果我将您的
{isSelected&&(Y)}
替换为{
isSelected?'(Y):“
}没有问题。但在后一种情况下,输出总是一个字符串

如果在
false
和字符串值之间更改
的子项,则React似乎不高兴重新渲染。也许DOM协调中有一个新的bug

此外,如果您的目的是重置存储并在更改事件上为菜单选择单个选项,而不是执行以下操作:

this.setState({ 
              items: {
                      ...this.state.items,
                     [v]: true
                     }
              })
做一些类似于:

this.setState({ 
              items: {
                      ...{a:false, b:false},
                     [v]: true
                     }
              })

如前所述,您从未取消选择选项。

不确定React 15版本,但我感觉您正在更改onchange中的对象结构。(不确定是否有意)更新了小提琴。谢谢,我认为这是扭转这个错误的方法。可能是。还在想它在15年里是怎么工作的。无论如何。希望它能解决你的问题。实际上,我把版本降到了15.6。你的解决方案是正确的,但不实用。如果我有很多选择,我会有很多重复的代码+我不太确定我是否理解你关于代码经济性的观点。严格来说,
的内容应该是单个字符串。您将生成三个无眼子节点,其中一些是字符串,一些是布尔值。如果您真的构建了一个字符串,那么它将保证工作正常。我不确定我是否期望有明确的书面行为。如果您关心我的setState建议,为什么不将单个选定值存储在state(this.state.selected)中,并保留一个带有所有If列表选项的
const
对象来填充列表-将其作为道具传递?