JSX深入使用

概念

本质上讲,JSX 是 React.createElement(component, props, ...children) 方法提供的语法糖

<MyComp color='blue' shadowSize={2}>Click Me </MyComp>
// => 
React.createElement(
  MyComp,
  {color: 'blue', shadowSize: 2},
  'Click Me'
)

组件引用

function MyComp (props) {
  return (
    <div>
      <CompA />   {/*当没有子代时,可以直接使用闭合标签*/}
      <CompB />   {/*组件开头,必须以大写,如小写则是被认为内置组件*/}
      <My.CompB />   {/*可以使用点表示法引用 React 组件,方便地从一个模块中导出多个 React 组件*/}
      <CompC[key] />   {/*组件引用不能使用表达式,这样无法正常工作,可使用变量替代*/}
    </div>
  )
}

表达式使用

function MyComp (props) {
  return (
    <div>
      <CompA foo={1+2+3+4} />               // 在组件中使用 {} 包裹的表达式
      <CompA bar={2 > 1 ? '2' : '1'} />     // 可以使用判断语法糖,但不能使用 if else
      <CompA {...props} />                  // 可以使用对象展开符传递对象
      <CompA>{list.map((item) => {return <li>item.text</li>})}</CompA>      // 使用 Array.map() 函数循环输出
      // props.children 可以像其他属性一样传递任何数据,而不仅仅是 React 元素,例如下面传递了一个函数
      <CompA>{(index) => <div key={index}>This is {index} in the list</div>}</CompA>
    </div>
  )
}

results matching ""

    No results matching ""