我有一个错误“ TypeError:无法读取未定义的属性”切片“的问题,当出现在与数据库缺乏连接的情况下,我尝试使用输入的onChange。我想防止这种情况,而不是显示此错误,只是不显示任何内容。我用它来过滤数据库中的一些数据。商品是我得到的产品的初始清单。当我断开与数据库的连接时,我的列表“项目”变为“未定义”。为了与项目建立联系,我使用了效果,并使用状态和函数filterItemBy来过滤数据。我想做类似if(items!== null){做所有事情都在onChange}的事情,但是如果为null则不要过滤。请参阅下面的代码部分。预先感谢您的帮助。
let [filteredItem, setFilteredItem] = useState();
useEffect(() => {
........
}
<input className="shop" placeholder="choose item"
onChange={(event) => {
let tableItemCopy = (items).slice(0);
tableItemCopy = tableItemCopy.filter((filteredItem: any) => filterItemBy(filteredItem, event));
setFilteredItem(tableItemCopy);
}}
/>
所以你说的想做...
onChange={(event) => {
if (items === undefined) {
// Show an error
alert('Here is my super useful error message!');
return;
}
let tableItemCopy = (items).slice(0);
tableItemCopy = tableItemCopy.filter((filteredItem: any) => filterItemBy(filteredItem, event));
setFilteredItem(tableItemCopy);
}}
不要忘记undefined
和null
不同。空是一个对象,是“真实的”。最好进行显式比较并处理准确的结果。