没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
目录
函数组件 (Function component)
属性解构 (Destructuring props)
JSX 中的属性展开 (JSX spread attributes)
合并解构属性和其它值 (Merge destructured props with other values)
条件渲染 (Conditional rendering)
子元素类型 (Children types)
数组做为子元素 (Array as children)
函数做为子元素 (Function as children)
渲染属性 (Render prop)
子组件的传递 (Children pass-through)
代理组件 (Proxy component)
样式组件 (Style component)
组织事件 (Event switch)
布局组件 (Layout component)
容器组件 (Container component)
高阶组件 (Higher-order component)
状态提升 (State hoisting)
受控输入 (Controlled input)
函数组件 (Function component)
函数组件 是最简单的一种声明可复用组件的方法
他们就是一些简单的函数。
function Greeting() {
return <div>Hi there!</div>;
}
从第一个形参中获取属性集 (props)
function Greeting(props) {
return <div>Hi {props.name}!</div>;
}
按自己的需要可以在函数组件中定义任意变量
最后一定要返回你的 React 组件。
function Greeting(props) {
let style = {
fontWeight: "bold",
color: context.color
};
return <div style={style}>Hi {props.name}!</div>;
}
使用 为任意必有属性设置默认值defaultProps
function Greeting(props) {
return <div>Hi {props.name}!</div>;
}
Greeting.defaultProps = {
name: "Guest"
};
属性解构 (Destructuring props)
解构赋值 是一种 JavaScript 特性。
出自 ES2015 版的 JavaScript 新规范。
所以看起来可能并不常见。
好比字面量赋值的反转形式。
let person = { name: "chantastic" };
let { name } = person;
同样适用于数组。
let things = ["one", "two"];
let [first, second] = things;
解构赋值被用在很多 中。函数组件
下面声明的这些组件是相同的。
function Greeting(props) {
return <div>Hi {props.name}!</div>;
}
function Greeting({ name }) {
return <div>Hi {name}!</div>;
}
有一种语法可以在对象中收集剩余属性。
叫做 ,看起来就像这样。剩余参数
function Greeting({ name, ...restProps }) {
return <div>Hi {name}!</div>;
}
那三个点 ( ) 会把所有的剩余属性分配给 对象... restProps
然而,你能使用 做些什么呢?restProps
继续往下看...
JSX 中的属性展开 (JSX spread attributes)
属性展开是 中的一个的特性。JSX
它是一种语法,专门用来把对象上的属性转换成 JSX 中的属性
参考上面的 ,属性解构
我们可以 对象的所有属性到 div 元素上扩散 restProps
function Greeting({ name, ...restProps }) {
return <div {...restProps}>Hi {name}!</div>;
}
这让 组件变得非常灵活。Gretting
我们可以通过传给 Gretting 组件 DOM 属性并确定这些属性一定会被传到 上div
<Greeting name="Fancy pants" className="fancy-greeting" id="user-greeting" />
避免传递非 DOM 属性到组件上。 解构赋值是如此的受欢迎,是因为它可以分离 和 DOM/
function Greeting({ name, ...platformProps }) {
return <div {...platformProps}>Hi {name}!</div>;
}
合并解构属性和其它值 (Merge destructured props with
other values)
组件就是一种抽象。
好的抽象是可以扩展的。
比如说下面这个组件使用 属性来给按钮添加样式。class
function MyButton(props) {
return <button className="btn" {...props} />;
}
一般情况下这样做就够了,除非我们需要扩展其它的样式类
<MyButton className="delete-btn">Delete...</MyButton>
在这个例子中把 替换成 btn delete-btn
JSX 中的属性展开 对先后顺序是敏感的
剩余12页未读,继续阅读
资源评论
北极象
- 粉丝: 1w+
- 资源: 345
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功