reactjs - 检查 typescript 中的 never[]

标签 reactjs typescript

我有一个 react 组件,应该列出用户正在上传的图像。 当用户没有时。

const [imageList, setImageList] = useState([]); 
const BlaLabel = () => (!imageList || imageList.length === 0) ? "No image loaded" : "Image(s) loaded";
return(<>...<BlaLabel/>...</>)

这不起作用,在用户执行任何操作之前会显示文本“已加载图像”。一些观察:

  • typeof(imageList) 是“对象”
  • imageList 的 typescript 类型是“never[]”
  • JSON.stringify(imageList) 为“[]”。

如果我添加

|| imageList === [] 

就目前的情况来看,一切都运转良好。但我的问题是我不太明白......

never[] 是字符串化为“[]”的对象吗?这是我需要对“空”和“未定义”进行的另一项检查吗? a === []a.length === 0 之间有什么区别。当谷歌搜索这个时,这对任何人来说似乎都不是一个大问题,所以希望我误解了一些东西。

简而言之。如何正确检查 imageList(上面)是否未设置

最佳答案

我遇到的第一个错误是,您尝试输入的字符串不是 JSX 元素,但必须是。所以我包装<p> 。第二次添加了buttononClick()模仿添加并检查文本是否发生变化。

import "./styles.css";
import React from "react";

type ImageProps = {
  url?: string;
};

export default function App() {
  const [imageList, setImageList] = React.useState<ImageProps[]>([]);
  const BlaLabel = () =>
    !imageList || imageList.length === 0 ? (
      <p>No image loaded</p>
    ) : (
      <p>Image(s) loaded</p>
    );
  return (
    <>
      <BlaLabel />
      <button
        onClick={() => {
          setImageList((oldArray) => [...oldArray, { url: "/asd" }]);
        }}
      >
        Add Image
      </button>
    </>
  );

这是CodeSandbox

关于reactjs - 检查 typescript 中的 never[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68962830/

相关文章:

javascript - Typescript npm 模块中的第三方依赖项

javascript - TypeScript:库函数的返回类型未知时该怎么办

reactjs - Webpack、Babel 和 React 中 IE11 中的语法错误

javascript - react 选择保存 Prop

javascript - 使用map方法将javascript对象数组转换为其他对象数组

javascript - 将 jQuery 插件与 Angular 5 (Typescript) 一起使用失败

Typescript 枚举、接口(interface)和映射

html - 如何在 css 中获得 5 x 5 的网格?

reactjs - 如何处理 React/Flux 中的保存状态?

javascript - 在 Draft-JS 中,如何将 html iframe 插入到我的 contentState 中?