在 React JS 中使用 Props 更改 HTML 标签

Changing HTML tag with Props in React JS

我想在每次调用时显示具有不同值的自定义 Tire 元素或简单 div(取决于媒体查询)。但是三元运算符不起作用(总是显示 Tire 元素,从不 div),我得到的是“undefined”而不是应该是它内容的字符串“1”。

谁能解释一下我错在哪里?

const Content = () => {
  const isDesktop = window.matchMedia('(min-width: 110em)')

  const displayTire = (props) => (isDesktop.matches
    ? <Tire className={`${props.title}`}>{`${props.content}`}</Tire>
    : <div className={`${props.title}`}>{`${props.content}`}</div>)

  displayTire.propTypes = {
    title: PropTypes.string.isRequired,
    content: PropTypes.string.isRequired
  }

  return (
        {displayTire('pneu1', '1')}
  )

export default Content

您传递的第一个参数是 'pneu1'

这已分配给 props 变量。

然后您阅读 props.title

字符串没有 title 属性,因此该值未定义。


你的道具类型说第一个参数应该是一个 object,它包含两个属性(titlecontent)。

传递匹配定义的对象而不是两个纯字符串。

您实际上并没有为 displayTire 的道具提供标题和内容。

要做到这一点,您应该做到:

  return (
        {displayTire({ title: 'pneu1', content: '1'})}
  )