首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象在使用React.createElement时没有有效的反应子?

对象在使用React.createElement时没有有效的反应子?
EN

Stack Overflow用户
提问于 2020-11-15 09:41:01
回答 1查看 44关注 0票数 0

我有一个简单的文本组件:

代码语言:javascript
复制
import * as React from 'react'

interface IProps {
  level: 't1' | 't2' | 't3',
  size: 's' | 'm' | 'l' | 'xl' | 'xxl',
  subtle?: boolean,
  children: any,
}

const textSize = (size) => {
  if (size === 's') {
    return 'f6'
  }
  if (size === 'm') {
    return 'f5 fw3'
  }
  if (size === 'l') {
    return 'f4 fw5  lh-2'
  }
  if (size === 'xl') {
    return 'f3 fw5 lh-2 ls-025 ma0'
  }
  if (size === 'xxl') {
    return 'f2 fw5 lh-title ls-03125 ma0 mb3'
  }
}

const elements = {
  t1: 'h2',
  t2: 'h1',
  t3: 'span',
};


export const Text = ({ children, level, size, subtle, ...props }: IProps) => {
  return React.createElement(
    elements[level] || elements.t3,
    {className: textSize(size)},
    props,
    children,
  );
}

它的用法如下:

代码语言:javascript
复制
    <Text
      size='s'
      level={'t3'}>
        Hello world
    </Text>

但是,当{className: textSize(size)},行包含在主组件中时,我会得到以下错误:

对象作为React子对象无效(找到:键{}的对象)。如果您打算呈现一个子集合,请使用数组代替。在跨度中的未知数

有什么原因吗?

码箱

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-15 09:48:03

React.createElement使用3个参数,然后尝试传递4个参数。

React.createElement(组件、道具、...children)

在您的例子中,{className: textSize(size)}变成了props,而您的props实际上是children。你可能需要做些像

代码语言:javascript
复制
return React.createElement(
    elements[level] || elements.t3,
    {...props, className: textSize(size)},
    children,
  );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64842969

复制
相关文章

相似问题

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