React基础知识学习篇

62 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

React Hello World

<div id="root"></div>

ReactDOM.render(

  <h1>123</h1>,

  document.getElementById('root')

)

jsx简介

嵌入表达式

const name = "jone"

const element = <h1>Hello, {name}</h1>

jsx,是一个javaScript的语法扩展,jsx可以很好的描述UI呈现出它应有交互的本质形式

 

 

元素渲染

 

React元素是创建开销极小的普通对象,React DOM会负责更新DOM来与React元素保持一致

想要将一个React元素渲染到根DOM节点中,只需要把它们一起传入React.DOM.render()

 

组件&props props的只读性

函数组件


function welcome(props) {

return <h1>hello,{props.name}</h1>

}

es6 class组件

class Welcome extends React.Component{

    render() {

    return<h1>hello,{this.props.name}</h1>

    }

}

 

state&生命周期

 

state三件事

1.不要直接state, 应该使用setState

this.setState({comment: 'hello'})

 

2.state的更新可能是异步的

this.setState((state, props) => ({

counter: state.counter + props.increment

}))

 

3.state的更新会被合并

 

事件处理

React中不能通过返回false的方式阻止你的默认行为,必须显示的使用preventDefault

 

function ActionLink() {

function handleClick(e) {

e.preventDefault();

console.log('The link was clicked');

}

return (

<a href="#" onclick={handleClick}>

click me

</a>

)

}

 

 

不绑定this, 可以在回调中使用箭头函数

   

状态提升

通常,多个组件需要反映相同的变化数据,这时我们建议将共享状态提升到最近的共同父组件中去

应当依靠自上而下的数据流,而不是尝试在不同组件间同步state

 

PureComponent

定制了shouldCompoentUpdate后的Compoent(浅比较)

class Comp extends React.PureComponent {

 

}

React.memo React16.6.0之后的版本,让函数式的组件也有pureComponent的功能

 

const Joke = React.memo(() => {

<div>

{this.props.value || 'loading...'}

</div>

})

Fragments key是唯一可以传递个Fragment的属性

有时,语义化的HTML会被破坏,比如当在jsx中使用<div>元素来实现React代码功能的时候,又或是在使用列表(<ol><ul>和<dl>)和HTML<table>时,这种情况下,我们应该使用React Fragmengts 来组合各个组件

无障碍表单 htmlfor

通过访问"current"来获得DOM节点

 React.lazy和Suspense懒加载