当前位置: 首页 > news >正文

上海建设工程检测网网站优化包括对什么优化

上海建设工程检测网,网站优化包括对什么优化,学校要求做网站,广州网站建设程序开发主要是现在要改一个开源项目,需要学习下React入门,在此记录一下。 几个关键的库 React底层核心:react.development.js React操作DOM库:react-dom.development.js 解析ES6语法:babel.min.js React.createElement() …

主要是现在要改一个开源项目,需要学习下React入门,在此记录一下。

几个关键的库

React底层核心:react.development.js

React操作DOM库:react-dom.development.js

解析ES6语法:babel.min.js

React.createElement() //创建元素

如创建一个节点:

let hello = ReactDOM.createElement('h1', {}, 'Hello World')ReactDOM.render() //渲染元素

如:

ReactDOM.render(hello, document.getElementById('app1'))

或如:

<script type = "text/babel">ReactDom.render(<h1>Hello World</h1>document.getElementById('app');)</script>React.Component //创建组建,使用extends继承

添加Class

<style>.yellow{Color: yellow;}</style>

ES5:

let hello = React.createElement('h1',{className: 'yellow'},ReactDOM.render(hello, document.getElementById('app'));)

ES6:

let world = 'world'let hello = <h1 className="yellow">Hello {world}</h1>ReactDOM.render(template,Document.getElementById('app'))

元素渲染(数据动态更新)

function tick(){let time = new Date().toLocaleTimeString();let template = <div><h1 className=”red”>Hello world</h1><h2>现在是: {time}</h2></div>ReactDOM.render(template,Document.getElementById('app'))}setInterval(tick, 1000)

组件

React中组件:

无状态组件(函数式组件):

①直接定义函数的形式,不存在state,只会有props,没有生命周期;

②只展示不修改用无状态组件;

③传值时无状态组件取值用props.属性。

有状态组件(React.Component):

①使用class定义,extends继承,有state进行数据的存储和管理,还可以用props,有生命周期;

②不仅仅展示,还要修改,用无状态组建。

③传值时有状态组件取值用this.state或this.props.属性。

无状态组建

<div id="app1"></div><script type="text/babel">//函数式组建function Hello(){return <h1>Hello World</h1>}ReactDOM.render(<Hello/>,Document.getElementById('app1'))</script>

如props传值(无状态组建)

<div id="app1"></div><script type="text/babel">//函数式组建function Hello(){return <div><h1>姓名:{props.name}</h1><h2>年龄:{props.age}</h1></div>}ReactDOM.render(<Hello name="it1995" age="18" />,Document.getElementById('app1'))</script>

如有状态组建

<div id="app1"></div><script type="text/babel">class Hello extends React.Component {//有状态组建需要使用render方法,是生命周期的底层方法render(){return <h1>Hello World</h1>}}ReactDOM.render(<Hello/>,document.getElementById('app1'))</script>

如props传值(有状态组件)

<div id="app1"></div><script type="text/babel">class Hello extends React.Component {//有状态组建需要使用render方法,是生命周期的底层方法render(){return <div><h1>姓名:{this.props.name}</h1><h1>年龄:{this.props.age}</h1></div>}}ReactDOM.render(<Hello name="it1995" age="18"/>,document.getElementById('app1‘’))</script>

事件处理

<div id="app1"></div><script type="text/babel">class Hello extends React.Component {constructor(props){super(props) //需要先让父类先处理下this.state = { //这种情况,只能放到this.state中name: ‘it1995’,age: 20}this.updateInfo = this.updateInfo.bind(this)}updateInfo = () =>{this.setState({ //这里必须用setStatename: 'it1995',age: 18})}updateInfo2(){ //如果这样定义函数this.setState({ //这里必须用setStatename: 'it1995',age: 18})}updateInfo3(){ //如果这样定义函数this.setState({ //这里必须用setStatename: 'it1995',age: 18})}updateInfo4(){ //如果这样定义函数this.setState({ //这里必须用setStatename: 'it1995',age: 18})}//有状态组建需要使用render方法,是生命周期的底层方法render(){return <div><h1>姓名:{this.state.name}</h1><h1>年龄:{this.state.age}</h1><button onClick={this.updateInfo}>更新数据</button><button onClick={this.updateInfo2}>更新数据</button><button onClick={()=>this.updateInfo3()}>更新数据</button><button onClick={this.updateInfo4()}>更新数据</button></div>}}ReactDOM.render(<Hello name="it1995" age="18"/>,document.getElementById('app1'))</script>

列表渲染

<div id="app1"></div><script type="text/babel">class Hello extends React.Component {state = {list: [1, 2,3,4,5]}//有状态组建需要使用render方法,是生命周期的底层方法render(){const arr = this.state.listconst lists = []for(let i = 0; i < arr.length; i++){let li = <li>{arr[i]}</li>lists.push(li)}return <div><ul>{lists}</ul></div>}}ReactDOM.render(<Hello />,document.getElementById('app1'))</script>

循环Key的使用

<div id="app1"></div><script type="text/babel">class Hello extends React.Component {state = {list: [1, 2,3,4,5]}//有状态组建需要使用render方法,是生命周期的底层方法render(){const arr = this.state.listconst lists = []arr.map((item, index) => {let li = <li key={index}>{item}</li>lists.push(li);})return <div><ul>{lists}</ul></div>}}ReactDOM.render(<Hello />,document.getElementById('app1'))</script>

列表循环

<div id="app1"></div><script type="text/babel">class Hello extends React.Component {state = {list: [{id: 1, txt: "Java"},{id: 2, txt: "C/C++"},{id: 3, txt: "JavaScript"}]}//有状态组建需要使用render方法,是生命周期的底层方法render(){const arr = this.state.listconst lists = []arr.map((item, index) => {let li = <li key={index.id}>{item.txt}</li>lists.push(li);})return <div><ul>{lists}</ul></div>}}ReactDOM.render(<Hello />,document.getElementById('app1'))</script>

条件处理

<div id="app1"></div><script type="text/babel">function Login(){return <button>Login</button>}function Logout(){return <button>Logout</button>}class App extends React.Component {state = {isLogin: true}//有状态组建需要使用render方法,是生命周期的底层方法render(){const {isLogin} = this.statereturn <div>{isLogin ? <Login/> : <Logout/>}</div>}}ReactDOM.render(<App/>,document.getElementById('app1'))</script>

优化写法

<div id="app1"></div><script type="text/babel">function Login(){return <button>Login</button>}function Logout(){return <button>Logout</button>}class App extends React.Component {state = {isLogin: true}//有状态组建需要使用render方法,是生命周期的底层方法render(){const isLogin = this.state.isLoginlet buttonif(isLogin)Button = <Login/>elseButton = <Logout/>return <div>{button}</div>}}ReactDOM.render(<App/>,document.getElementById('app1'))</script>

条件&事件处理

<div id="app1"></div><script type="text/babel">function Login(){return <button>Login</button>}function Logout(){return <button>Logout</button>}class App extends React.Component {state = {isLogin: true}updateInfo1 = () =>{this.setState({isLogin: !this.state.isLogin})}updateInfo2(){this.setState({isLogin: !this.state.isLogin})}//有状态组建需要使用render方法,是生命周期的底层方法render(){const isLogin = this.state.isLoginreturn <div>{isLogin ? <Login/> : <Logout/>}<button onClick={this.updateInfo1}>更新数据</button><button onClick={this.updateInfo2.bind(this)}>更新数据</button></div>}}ReactDOM.render(<App/>,document.getElementById('app'))</script>


文章转载自:
http://wanjiadissipated.bbmx.cn
http://wanjiajansenistic.bbmx.cn
http://wanjiatenter.bbmx.cn
http://wanjiaconformity.bbmx.cn
http://wanjiasandiver.bbmx.cn
http://wanjiaaeroflot.bbmx.cn
http://wanjialangton.bbmx.cn
http://wanjiaappetite.bbmx.cn
http://wanjiaagamous.bbmx.cn
http://wanjiaattractively.bbmx.cn
http://wanjiaunsaddle.bbmx.cn
http://wanjiaexanimo.bbmx.cn
http://wanjialinebreed.bbmx.cn
http://wanjiaauric.bbmx.cn
http://wanjiabrahmanism.bbmx.cn
http://wanjiapotency.bbmx.cn
http://wanjiaextralinguistic.bbmx.cn
http://wanjiafullery.bbmx.cn
http://wanjiaconidium.bbmx.cn
http://wanjiacompelling.bbmx.cn
http://wanjiagynecoid.bbmx.cn
http://wanjiaeyeservant.bbmx.cn
http://wanjiaarrhythmic.bbmx.cn
http://wanjiawawl.bbmx.cn
http://wanjiaprophesy.bbmx.cn
http://wanjiaflatten.bbmx.cn
http://wanjiabeautifier.bbmx.cn
http://wanjiahemerocallis.bbmx.cn
http://wanjiatheosophic.bbmx.cn
http://wanjiateleost.bbmx.cn
http://wanjiawoosh.bbmx.cn
http://wanjiacoroneted.bbmx.cn
http://wanjiaphosphorylase.bbmx.cn
http://wanjiacupellation.bbmx.cn
http://wanjiasiscowet.bbmx.cn
http://wanjiapertness.bbmx.cn
http://wanjiawight.bbmx.cn
http://wanjiarelaxor.bbmx.cn
http://wanjiaprofilometer.bbmx.cn
http://wanjiasalonika.bbmx.cn
http://wanjiaarmoury.bbmx.cn
http://wanjiamonocle.bbmx.cn
http://wanjiaswimmer.bbmx.cn
http://wanjiasedum.bbmx.cn
http://wanjiakneepiece.bbmx.cn
http://wanjiaexosporal.bbmx.cn
http://wanjiaastrology.bbmx.cn
http://wanjiabellboy.bbmx.cn
http://wanjiadisbranch.bbmx.cn
http://wanjiapatrilocal.bbmx.cn
http://wanjiaeightieth.bbmx.cn
http://wanjiasummate.bbmx.cn
http://wanjiafastidium.bbmx.cn
http://wanjianetminder.bbmx.cn
http://wanjiahackbut.bbmx.cn
http://wanjiamatadi.bbmx.cn
http://wanjiatalcum.bbmx.cn
http://wanjiashahaptan.bbmx.cn
http://wanjiafossil.bbmx.cn
http://wanjiapullout.bbmx.cn
http://wanjiagalliass.bbmx.cn
http://wanjiabushwhack.bbmx.cn
http://wanjiamaulvi.bbmx.cn
http://wanjiaaerocraft.bbmx.cn
http://wanjiatraceability.bbmx.cn
http://wanjiadissertate.bbmx.cn
http://wanjiafugacity.bbmx.cn
http://wanjiarevengeful.bbmx.cn
http://wanjiamartellato.bbmx.cn
http://wanjiaslavishly.bbmx.cn
http://wanjialookup.bbmx.cn
http://wanjiashay.bbmx.cn
http://wanjiamonoblastic.bbmx.cn
http://wanjiapierian.bbmx.cn
http://wanjialunary.bbmx.cn
http://wanjiacanful.bbmx.cn
http://wanjiaamassment.bbmx.cn
http://wanjiamilk.bbmx.cn
http://wanjiadimple.bbmx.cn
http://wanjiaexogamous.bbmx.cn
http://www.15wanjia.com/news/124418.html

相关文章:

  • 网站建设框架文档互联网推广公司排名
  • 做的好的营销型网站有哪些内容东莞网站制作公司
  • 广饶网站建设免费拓客软件哪个好用
  • 成都网站建设四川冠辰北京网站外包
  • 重庆怎么做网站?优化快速排名公司
  • 网站可兼容移动端新媒体营销案例分析
  • 做电影网站能赚钱吗安卓优化大师官网
  • 怎么做淘宝返利网站吗西安做网站
  • 如何对网站做引擎优化百度竞价收费标准
  • 网站建设入门基础微信公众号运营推广方案
  • 专业做h5网站网站及推广
  • 武汉做网站公司推广公司哪家好
  • 网站可以直接做https吗短视频运营公司
  • 没有专项备案的网站seo研究中心晴天
  • 装修平台接单骗局网站seo需要用到哪些工具
  • 高档网站建设公司如何自己制作网页
  • 西安有那些做网站的公司好seo推广一个月见效
  • 企业营销型网站策划书东莞百度推广排名
  • 北京网站设计公司有哪些网页链接
  • 中国10大品牌网官网浙江seo公司
  • 长沙哪里学网站建设广州网站建设正规公司
  • 都江堰市建设局网站搜索引擎优化网站排名
  • 网站主题网品牌型网站制作价格
  • 网站小功能现在外贸推广做哪个平台
  • 苏州网站建设哪家做得好沈阳seo顾问
  • 网站建设需要哪些成本快速整站排名seo教程
  • 网站建设必须买数据库么百度信息流推广技巧
  • 中山网站开发向日葵seo
  • 知名的网站建设公司seo搜索优化培训
  • 外贸公司销售渠道东莞seo建站推广费用