@yacent
2017-10-10T17:23:46.000000Z
字数 7335
阅读 976
React学习笔记
前端框架
{}
()
当中写,避免自动插入分号而导致了错误aria-*
、data-*
React.CreateElement
的语法糖ReactDOM.render(ele, mount)
=> component
-> functional -> return JSX
-> ES6 class (recommended)
=> component 只能返回一个根节点,即只返回一个 div,将其他都包含在div当中
=> props are read Only
setState
来改变statethis.state.name = "comment"
,react不会监听到变化state的修改有如下三个注意事项
state的更新具有异步性
this.setState
当中传入 preState
this.setState((prevState, props) => {
this.state.name = prevState.name + 'nihaoya';
})
写事件绑定的时候记得绑定this
constructor () {
this.handleClick = this.handleClick.bind(this)
}
// es7
handleClick: () => {
// do something
}
{ isI18n &&
<div>
...
</div>
}
string
类型的,因为有key,react 能够通过key 来计算是否需要更新
class Example extends React.Component {
constructor(props) {
super(props);
}
render () {
const listItems = numbers.map((number) =>
<li key={number.toString()}>
{number}
</li>
);
return (
<ul>
{listItems}
</ul>
)
}
}
value
来获取数据name
属性,通过 event.target.name
来区分是哪个表单组件发出的变化,并且做相对应的处理source of truth
,保持数据的 top-down data flow
{this.props.children}
,这样在调用组件的时候,可以在组件两个闭合标签当中写任何东西,都会被映射过去,有点类似于 vue 的 slottrue
{...props}
true
| false
component.defaultProps
class Test extends React.Component {
// do something
}
Test.defaultProps = {
name: 'Bob'
}
// Parent 当中 this.textInput 直接为 子组件的 所绑定的引用 Input
class Parent extends React.Component {
constructor (props) {
super(props);
}
render () {
return (
<Children inputRef={(input) => this.textInput = input}></Children>
)
}
}
class Children extends React.Component {
constructor (props) {
super(props);
}
render () {
return (
<div>
<input ref={this.props.inputRef} value="sdasd">
</div>
)
}
}
class Parent extends React.Component {
constructor (props) {
super(props);
}
handleSubmit () {
this.textInput.value // 111
}
render () {
return (
<input ref={(input) => {this.textInput = input}} value="111">
<button onSubmit={this.handleSubmit}></button>
)
}
}
但是我们推荐使用 controlled component,有如下的几个原因
shouldComponentUpdate
返回的 boolean 来判断是否需要组件的更新
return Object.assing({}, state, payload)
主要是通过React提供一些原生的接口,比如 React.createElement
等去实现 es6 中的语法能实现的东西,更多详情可以直接去官网看
没有JSX支持的话,就用回 React.createElement
,JSX就只是其一个语法糖。
re-render
key
,diff会根据 key去辨别某个组件是否需要更新 key
只需要在 兄弟节点 当中唯一即可,不需要全局唯一key
最好是稳定的,因为如果同一个元素的key不断变化,会导致组件失去其 state,并且做了额外的渲染mixins
re-render
主要是使网站能够给各种人用,官网里面有挺多有用的建议,可以去看,很多资源。主要是涉及 ·aria-*· 的相关属性
this.props.children
React.Component的一些 lifecycle
this.setState
不会触发这个阶段other API: setState()
、forceUpdate()
class properties: defaultProps
、displayName
instance properties: props
、state
import ReactDOM from 'react-dom'
)ref
import ReactDOMServer from 'react-dom/server'
)主要是在服务端去使用react进行渲染成页面
renderToString
差不多,不过其差别在于不会给组件添加 data-reactid
aria-*
and data-*
should be lowercased style 属性
<div style={{color: red, backgroundColor: black}}></div>
常用的一些测试库: Jest、anzyme、Mocha等等
写测试时,shallow rendering很有用,可以一步步的控制渲染
创建集群
集群新增资源所属项目
字段集群内新增的云主机、负载均衡器等资源将会自动分配到该项目下
projectId
,代码当中具体key值为 projectSelection
ssh密钥
安全组策略
集群详情页
集群新增资源所属项目
集群内新增的云主机、负载均衡器等资源将会自动分配到该项目下
请选择与原项目不同的项目
ModifyProjectId
扩展节点页
集群新增资源所属项目
负载均衡页面修改为 Ingress 页面
Ingress
Ingress 是用于将外部 HTTP(S) 流量路由到服务(service)的规则集合。 更多说明
帮助文档
类型