zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Head First设计模式(观察者模式Observer)
    Head First设计模式(装饰者模式)
    Head First设计模式
    Head First设计模式 单件模式 独一无二的对象
    .NET 设计规范.NET约定、惯用法与模式8.使用规范
    .NET 设计规范.NET约定、惯用法与模式附录:C#编程风格约定
    设计模式 一 引言
    .NET 设计规范.NET约定、惯用法与模式7.异常
    Head First设计模式 工厂模式 烘烤OO的精华
    前端IDE中Emmet插件快捷输入HTML代码
  • 原文地址:https://www.cnblogs.com/littlepage/p/12099980.html
Copyright © 2011-2022 走看看