react入门

前置知识

我们假定你已经对 HTML 和 JavaScript 都比较熟悉了。即便你之前使用其他编程语言,你也可以跟上这篇教程的。除此之外,我们假定你也已经熟悉了一些编程的概念,例如,函数、对象、数组,以及 class 的一些内容。

如果你想回顾一下 JavaScript,你可以阅读这篇教程。注意,我们也用到了一些 ES6(较新的 JavaScript 版本)的特性。在这篇教程里,我们主要使用了箭头函数(arrow functions)classlet 语句和 const 语句。你可以使用 Babel REPL 在线预览 ES6 的编译结果。

环境准备

完成这篇教程有两种方式:可以直接在浏览器中编写代码,也可以在你电脑上搭建本地开发环境。

方式一:在浏览器中编写代码

首先在新的浏览器选项卡中打开这个初始模板。 你可以看到一个空的井字棋盘和 React 代码。我们接下来会在本教程中修改该 React 代码。

如果你选择这种方式,就可以跳过方式二,直接从概览开始阅读教程啦。

方式二:搭建本地开发环境

这是完全可选的

React 是什么?

React 是一个声明式,高效且灵活的用于构建用户界面的 JavaScript 库。使用 React 可以将一些简短、独立的代码片段组合成复杂的 UI 界面,这些代码片段被称作“组件”。

React 中拥有多种不同类型的组件,我们先从 React.Component 的子类开始介绍:

class ShoppingList extends React.Component {
  render() {
    return (
      <div className="shopping-list">
        <h1>Shopping List for {this.props.name}</h1>
        <ul>
          <li>Instagram</li>
          <li>WhatsApp</li>
          <li>Oculus</li>
        </ul>
      </div>
    );
  }
}

// 用法示例: <ShoppingList name="Mark" />

我们马上会讨论这些又奇怪、又像 XML 的标签。我们通过使用组件来告诉 React 我们希望在屏幕上看到什么。当数据发生改变时,React 会高效地更新并重新渲染我们的组件。

其中,ShoppingList 是一个 React 组件类,或者说是一个 React 组件类型。一个组件接收一些参数,我们把这些参数叫做 props(“props” 是 “properties” 简写),然后通过 render 方法返回需要展示在屏幕上的视图的层次结构。

render 方法的返回值描述了你希望在屏幕上看到的内容。React 根据描述,然后把结果展示出来。更具体地来说,render 返回了一个 React 元素,这是一种对渲染内容的轻量级描述。大多数的 React 开发者使用了一种名为 “JSX” 的特殊语法,JSX 可以让你更轻松地书写这些结构。语法 <div /> 会被编译成 React.createElement('div')。上述的代码等同于: 

return React.createElement('div', {className: 'shopping-list'},
  React.createElement('h1', /* ... h1 children ... */),
  React.createElement('ul', /* ... ul children ... */)
);

jsx语法 

 react 响应式数据state

// react 响应式数据state
import React,{Component} from 'react';
class App extends Component{
	constructor(props){
		super(props);
		this.state={ num:1 }
	}
	addNum(n){
		this.setState({num:this.state.num+n})
	}
	render(){
		return (<div>
		<h1>函数类</h1>
		<button onClick={()=>{
			this.setState({num:this.state.num+1})
		}}>{this.state.num}</button>
		<button onClick={this.addNum.bind(this,2)}>{this.state.num}</button>
		</div>)
	}
}
export default App;

 渲染

const str = "你好react"
const msg = "还得是你<strong>HTML</strong>"
const score = 80;
let flag = true;
const list = ['abc','bcd','cdf']
function App() {
	return (<div>
	<h1>模板语法</h1>
	<p>{str}</p>
	<p>{2+3}</p>
	<p>{str.split('').reverse().join('')}</p>
	<p> 02 html渲染</p>
	<p dangerouslySetInnerHTML={{__html:msg}}></p>
	<p>03条件渲染(三目运算符,&&)</p>
	<p>{score>=60?'及格':"重学"}</p>
	{flag&&<p>芝麻开门</p>}
	<p>04列表渲染</p>
	{list.map((item,index)=><p key={index}>{item}</p>)}
	</div>)
}
export default App;

定义一个数组 


//定义一个数组
const arr = [
	<p key="a">你好我叫王某</p>,
	<p key="b">我非常牛逼</p>,
	<p key="c">不要试图挑衅我</p>
]
const stl = {
	fontSize:"24px",
	color:"#f70"
}
//创建app组件
function App(){
	//返回一个dom节点
	return (<div>
	<h1 className='myh'>你好react</h1>
	{arr}
	<p style={stl}>应用样式</p>
	</div>)
}
//导出
export default App;

点击事件

function App(){
	function say(str){
		alert("我喜欢秋天"+str)
	}
	return (<div>
	 <h1>事件</h1>
	 <p>react 事件与js事件一致,需要驼峰写法</p>
	 <button onClick={()=>{alert("我喜欢春天")}}>按钮</button>
	 <button onClick={say.bind(this,"的风")}>按钮</button>
	 <button onClick={say.bind(this,"的景色")}>按钮</button>
	 <button onClick={()=>say("的温度")}>按钮</button>
	</div>)
}
export default App;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值