[英]Object is possibly null react/typescript
我一直遇到这个错误,代码在普通反应中工作正常,但在 typescript 中它一直抛出这个错误“对象可能为空”。 我试着用“。”来反驳它。 但它没有帮助。
日志中的第二个错误是“无法读取 null 读取的属性(textContent)
”
我将其设置为 false
"strictNullChecks": false,
这是一个沙箱 - https://codesandbox.io/s/sweet-mclean-nrhcdq?file=/src/App.tsx
这是获取 api 调用 -
const [isLoading, setLoading] = useState(false);
//storing data
const [data, setData] = useState(false);
//fetching data
useEffect(() => {
setLoading(true);
const fetchList = async (): Promise<UsersList> => {
const result: any = await fetch("https://randomuser.me/api/?results=20")
.then((res) => res.json())
.then((data) => {
setData(data);
setLoading(false);
console.log(data);
});
return result;
};
fetchList();
}, []);
这是导致我出现问题的代码,有更好的方法吗? 有人提到了 useref,但我不确定如何使用 useEffect 中的获取调用来实现它。
所需的 output 是包含 Miss 的任何文本都具有蓝色背景。
const h2 = window.document.getElementById("person")!
h2.innerHTML = h2.textContent!.replace(/[Miss]/g, "<span class='title'>Miss</span>");
.title {
background-color: blue;
}
后来在 html 中,我过滤并映射了数据 -
<div style={hoverStyle} className="grid grid-cols-4 gap-2 p-2 mt-20">
{data?.results.filter((val: any)=>{
if (searchUser === "") {
return val
} else if (val.name.first.toLowerCase().includes(searchUser.toLowerCase())) {
return val
} else if (val.email.toLowerCase().includes(searchUser.toLowerCase())){
return val
} else if
(val.location.city.toLowerCase().includes(searchUser.toLowerCase())){
return val
}
}).map((d: any) => (
<div style={hoverStyle} className=" ease-in-out delay-150 hover:-translate-y-1 hover:scale-110 duration-300 border-white shadow-slate-500 bg-white hover:opacity-95 rounded-lg container p-5">
<img className="rounded-full w-44 h-44 " src={d.picture.large} />
<h2 id="person" >{d.name.title}</h2>
有任何想法吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.