• React 入门


    1.安装

    • 1.npm install -g create-react-app 安装脚手架

    • 2.create-react-app pros-name 初始化

    • 3.react的api比较少,基本一次,之后不用看文档了,核心js功力

    2.React&ReactDom

    • 删除src下所有代码,新建index.js
    import React from 'react'
    import ReactDOM from 'react-dom'
    import App from './App'
    
    ReactDOM.render(<App/>,document.querySelector('#root'))
    
    • 新建App.js
    import React from 'react'
    
    function App(){
        return (
            <h1>HelloWorld</h1>
        )
    }
    
    export default App
    
    • 上述代码有困惑的地方,首先是JSX语法
    ReactDOM.render(<App/>,document.querySelector('#root'))
    

    类似js和html的混合,我们称JSX,核心是js实现

    3.数据绑定

    • 我们使用大括号进行绑定数据
    function App(){
    	const name = 'steve yu'
    	return (
    		<div>
    			<h1>{name}</h1>
    		</div>
    	)
    }
    
    • 或者我们还可以进行绑定对象
    function formatName(user){
    	return user.firstName+' '+user.lastName
    }
    function App(){
    	const user = {firstName:'steve',lastName:'yu'}
    	return (
    		<div>
    			<h1>{formatName(user)}</h1>
    		</div>
    	)
    }
    

    4.组件开发

    • 函数类型的组件
    //函数类型的组件
    export function Welcome1(){
        return (
            <div>
                welcome1
            </div>
        )
    }
    
    • 基于类的组件
    //基于类的组件
    export class Welcome2 extends React.Component{
        render(){
            return <div>welcome2</div>
        }
    }
    
    • 调用组件
    function App() {
      return (
        <div>
          <Welcome1></Welcome1>
          <Welcome2></Welcome2>
        </div>
      );
    }
    

    5.制作一个时钟组件

    • state保存时间状态,然后componentDidMount进行装载后每隔1秒进行刷新时间,最后在卸载组件的时候进行清除定时器
    • 如果数据需要修改,并且同时响应页面变化,我们需要放到state中,并且使用setState来修改数据
    export default class Clock extends Component{
        state = {
            date : new Date()
        }
    
        componentDidMount(){
            this.timer = setInterval(()=>{
                this.setState({
                    date: new Date()
                })
            },1000)
        }
    
        componentWillUnmount(){
            clearInterval(this.timer)
        }
        
        render(){
            return (
                <div>
                    {this.state.date.toLocaleTimeString()}
                </div>
            )
        }
    }
    

    6.条件渲染和列表渲染(props属性传递)

    export default class Cart extends Component{
        constructor(props){
            super(props)
            this.state = {
                goods : [
                    {id:1,text:'milk'},
                    {id:2,text:'banana'},
                    {id:3,text:'apple'}
                ]
            }
        }
        render(){
            return(
                <div>
                    {/* 条件渲染 */}
                    {this.props.title && <h1>{this.props.title}</h1>}
                    {/* 列表渲染 */}
                    <ul>
                        {this.state.goods.map(good=>
                            <li key={good.id}>{good.text}</li>
                        )}
                    </ul>
                </div>
            )
        }
    }
    

    7.事件监听

    React中使用onClick类似写法来监听事件,注意this绑定问题,react里严格遵循单项数据流,没有数据的双向绑定,所以输入框要设置value和onChange

  • 相关阅读:
    【NOIp模拟赛】种花
    【NOIP模拟赛】质数序列
    【NOIp模拟赛】兔子
    【NOIp模拟赛】圆桌游戏
    【NOIp模拟赛】花
    【洛谷P2345】奶牛集会
    【洛谷P1774】最接近神的人_NOI导刊2010提高(02)
    【洛谷P1495】 曹冲养猪
    【洛谷P1287】 盒子与球
    NOIP2009 Hankson 的趣味题
  • 原文地址:https://www.cnblogs.com/littlepage/p/12099980.html
Copyright © 2020-2023  润新知