首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React类型记录组件中的IntrinsicAttributes道具

React类型记录组件中的IntrinsicAttributes道具
EN

Stack Overflow用户
提问于 2022-02-14 00:25:21
回答 3查看 2.5K关注 0票数 1

你好,我有这样的消息通知:

类型'{子:字符串;通知:字符串;}‘不能分配给'IntrinsicAttributes &{ notify: any;}’。'IntrinsicAttributes &{ notify: any;}'.ts(2322)中不存在属性‘子属性’

使用卡片组件。这是我第一次明白。

这是构成部分:

代码语言:javascript
复制
const Card = (props:{notify:any}) => {
 
  if (props.notify.length> 0> 0){
    return <IonIcon icon={notifications}  id="iconoHomeCampana">  </IonIcon>

  }else{
    return <IonIcon icon={notificationsOff}  id="iconoHomeCampana">  </IonIcon>
  }
}


export interface newMessage{
  de:string
  ticket:string
}

const App= () => {

  const [notifications, setNotifications] =  useState < newMessage []> ( [])

  useEffect(() => {

  axios.get(url+"chatsinleer/"+props.email).then((resp: { data: any; }) => {
      if (resp.data!="bad"){
        setNotifications(resp.data.map((d: { de: any; ticket: any; }) => ({
          de:d.de,
          ticket:d.ticket,
          })));
      }
    })

  }, []);

return (
      <IonPage >
        <IonHeader>
          <IonToolbar>
            <IonGrid>
              <IonRow id="header">
                <IonCol id="columna" size="1.5"><IonButtons ><IonMenuButton /> </IonButtons></IonCol>
                <IonCol id="columna2" ><Busqueda categorias={categorias} setCategorias={setCategorias} setProveedorBuscadoHook={setProveedorBuscadoHook} setBuscar={setBuscar} /></IonCol>
                <IonCol id="columna3" size="1.5"> 
                  <Card notify={notifications}>  </Card>
                </IonCol>
              </IonRow>
            </IonGrid>
          </IonToolbar>
        </IonHeader>
    )
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-02-14 00:52:58

您需要删除<Card notify={notifications}> </Card>内部的空间

然后像<Card notify={notifications}></Card>一样使用它,或者像这样更好地使用:

代码语言:javascript
复制
<Card notify={notifications}/>

问题在于,将空间视为儿童要素的反应;

下面是简单的repro,它也产生了同样的错误:

代码语言:javascript
复制
const Comp1 = ({ a }: { a: boolean }) => {
  return null;
};

const Comp2 = () => {
  return <Comp1 a={true}> </Comp1>;
};
票数 2
EN

Stack Overflow用户

发布于 2022-02-14 01:04:23

答案:

<Card> </Card><Card>{" "}</Card>相同,这意味着您要作为该组件的子组件发送一个空间。将其替换为<Card {...props} />,这将解决您的问题,因为没有子节点。

解释:

JSX文档:

JSX删除一行开头和结尾处的空格。它还删除空行。移除与标记相邻的新行;出现在字符串文本中间的新行被浓缩为单个空格。

本期

基本上,在JSX中,空间被认为是有意义的,所以在不需要的时候避免空间是一个很好的实践。

更书呆子的东西:

JSX.IntrinsicAttributes --它是一个接口,允许您全局扩展JSX节点的属性,例如,React中的key

React不包括children支柱在IntrinsicAttributes中,所以当组件需要呈现子组件时,必须显式地将其添加到道具类型定义中。

这里有更多的信息

票数 1
EN

Stack Overflow用户

发布于 2022-04-10 23:02:12

在这里,伙计

代码语言:javascript
复制
interface ISetAuth {
  setAuth: Dispatch<SetStateAction<boolean>>;
}

const Login = ({ setAuth }: ISetAuth) => {

}

我挣扎了40分钟.*‘)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71106004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档