React中状态更新后条件渲染不生效,目标组件无法正常展示如何修复
问题原因
Array.prototype.includes() 方法的入参为待匹配的具体元素值,方法内部会对入参和数组项直接做全等比较。你当前给includes传入了回调函数,逻辑等价于判断professionals数组中是否存在这个回调函数对象本身,永远返回false,因此条件判断始终命中展示禁用输入框的分支。
修复方案
将用于判断是否存在符合条件项的方法替换为Array.prototype.some(),该方法接收回调函数作为入参,会遍历数组判断是否存在至少一个满足回调逻辑的元素。
修正后的条件渲染代码如下:
<div className="column is-6"> { !professionals.some(item => item.value ==='programmers') ? <BaseInput disabled placeholder="usernames"></BaseInput> : <ReactTags tags={users} placeholderText={!users.length?"Search ...":''} allowNew={true} onDelete={(i)=> { const tags = users.slice(0) tags.splice(i, 1) setUsers(tags) }} onAddition={ (tag) =>{ const tags = [].concat(users, tag) setUsers(tags) }} /> } </div>
内容的提问来源于stack exchange,提问作者NewTech Lover
相关产品推荐
相关产品推荐

