首页 > 专栏 > 前端 > 文章详情
React 的 JSX 中的 props,有多种方式可以指定 发布于:2021-03-27 10:16:26   来源:React   查看:3  讨论:0
1、props是js表达式。aLB易塔云建站-模板下载,web开发资源,技术博客
aLB易塔云建站-模板下载,web开发资源,技术博客
你可以把包裹在 {} 中的 JavaScript 表达式作为一个 prop 传递给 JSX 元素。例如,如下的 JSX:
<MyComponent foo={1 + 2 + 3 + 4} />
在 MyComponent 中,props.foo 的值等于 1 + 2 + 3 + 4 的执行结果 10aLB易塔云建站-模板下载,web开发资源,技术博客
aLB易塔云建站-模板下载,web开发资源,技术博客
if 语句以及 for 循环不是 JavaScript 表达式,所以不能在 JSX 中直接使用。但是,你可以用在 JSX 以外的代码中。比如:
function NumberDescriber(props) {
  let description;
  if (props.number % 2 == 0) {
    description = <strong>even</strong>;
  } else {
    description = <i>odd</i>;
  }
  return <div>{props.number} is an {description} number</div>;
}
2、props是字符串字面量。
<MyComponent message="hello world" />
<MyComponent message={'hello world'} />
当你将字符串字面量赋值给 prop 时,它的值是未转义的。所以,以下两个 JSX 表达式是等价的:
<MyComponent message="&lt;3" />
<MyComponent message={'<3'} />
3、props的默认值是true。aLB易塔云建站-模板下载,web开发资源,技术博客
aLB易塔云建站-模板下载,web开发资源,技术博客
如果你没给 prop 赋值,它的默认值是 true。以下两个 JSX 表达式是等价的:
<MyTextBox autocomplete />
<MyTextBox autocomplete={true} />
4、props的属性将要展开。aLB易塔云建站-模板下载,web开发资源,技术博客
aLB易塔云建站-模板下载,web开发资源,技术博客
如果你已经有了一个 props 对象,你可以使用展开运算符 ... 来在 JSX 中传递整个 props 对象。以下两个组件是等价的:
function App1() {
  return <Greeting firstName="Ben" lastName="Hector" />;
}
function App2() {
  const props = {firstName: 'Ben', lastName: 'Hector'};
  return <Greeting {...props} />;
}
你还可以选择只保留当前组件需要接收的 props,并使用展开运算符将其他 props 传递下去。
const Button = props => {
  const { kind, ...other } = props;
  const className = kind === "primary" ? "PrimaryButton" : "SecondaryButton";
  return <button className={className} {...other} />;
};

const App = () => {
  return (
      <div>
        <Button kind="primary" onClick={() => console.log("clicked!")}>
          Hello World!
        </Button>
      </div>
  );
};

评论

  • 匿名