美文网首页
react组件

react组件

作者: 灯光树影 | 来源:发表于2018-10-01 09:34 被阅读0次

一、什么是组件

组件(Component)是对数据和方法的简单封装,react还包括对html的简单的简单封装

二、react组件的分类

  • UI组件
    顾名思义,UI组件就是仅仅负责页面表现的组件,没有或者只有少量方法的封装。
class TodoListUI extends Component{
    render(){
        return (
            <div style={{margin: '20px'}}>
                <div>
                    <Input placeholder='todo item' style={{width: '300px', marginRight: '10px'}} value={this.props.inputValue} onChange={this.props.changeInputValue}></Input>
                    <Button type="primary" onClick={this.props.addItem}>提交</Button>
                </div>
                <List
                    style={{width: '300px', marginTop: '20px'}}
                    bordered
                    dataSource={this.props.list}
                    renderItem={(item,index) => (<List.Item onClick={(index) => {this.props.handleItemDelete(index)}}>{item}</List.Item>)}
                />
            </div>
        );
    }
}
  • 容器组件
    容器组件是存储数据和方法的组件
class TodoList extends Component {

  constructor(props){
    super(props)
    this.state = store.getState()
    this.changeInputValue = this.changeInputValue.bind(this)
    this.addItem = this.addItem.bind(this)
    this.handleStoreChange = this.handleStoreChange.bind(this)
    this.handleItemDelete = this.handleItemDelete.bind(this)
    store.subscribe(this.handleStoreChange)
  }

  render() {
    return (
      <TodoListUI 
        inputValue = {this.state.inputValue}
        list = {this.state.list}
        changeInputValue = {this.changeInputValue}
        addItem = {this.addItem}
        handleItemDelete = {this.handleItemDelete}
      />
    );
  }

  componentDidMount(){
    axios.get('/getData').then(function(res){
      console.log(res.data)
    })
  }

  changeInputValue(e){
    const action = getChangeInputValueAction(e.target.value)
    store.dispatch(action)
  }

  addItem(){
     const action = getAddTodoItemAction()
     store.dispatch(action)
  }

  handleStoreChange(){
    this.setState(store.getState())
  }

  handleItemDelete(index){
    const action = getDeleteTodoItemAction(index)
    store.dispatch(action)
  }
}
  • 无状态组件
    当UI组件只有render函数时,可以用箭头方法直接导出UI组件,props通过参数接收,组件中没有props,所以是无状态的组件
const TodoListUI = (props) => {
    return(
        <div style={{margin: '20px'}}>
            <div>
                <Input placeholder='todo item' style={{width: '300px', marginRight: '10px'}} value={props.inputValue} onChange={props.changeInputValue}></Input>
                <Button type="primary" onClick={props.addItem}>提交</Button>
            </div>
            <List
                style={{width: '300px', marginTop: '20px'}}
                bordered
                dataSource={props.list}
                renderItem={(item,index) => (<List.Item onClick={() => {props.handleItemDelete(index)}}>{item}</List.Item>)}
            />
        </div>
    ) 
}

无状态组件没有生命周期函数,所以性能可以提高

相关文章

  • React基础

    React包含react元素和react组件 react元素 react组件 react组件分为函数组件和类组件 ...

  • 组件

    组件是React的基石,所有的React应用程序都是基于组件的。React组件,可以通过React.createC...

  • ReactNative学习笔记(三)Hello World!

    React Native 看起来很像 React,但React Native的基础组件是原生组件 不是web组件。...

  • react子组件向父组件传值

    相关资料:react 父组件怎么获取子组件的这个值React组件间信息传递方式react同级组件之间传值 • 父...

  • React 进阶二 组件详解

    React组件 React的组件大概分为俩部分,无状态组件和有状态组件 无状态组件。下面React官网中定义的一个...

  • 2、react基础介绍

    React理念 划分组件边界的原则 React组件的数据种类 React组件的声明周期 组件的划分 高内聚 低耦合...

  • React概念图

    React概念图 React组件生命周期概念图 参考文档:React入门教程 组件生命周期React:组件生命周期...

  • react16.3-jest

    功能组件和UI组件 react-antd 命名 react 规定组件开头都为大写,所以如果react项目如果用an...

  • 如何创建React组件并发布到npm?

    实现步骤: 创建React组件项目; 创建测试项目并引用组件; 发布React组件到npm上; 一、创建React...

  • RN原始项目-HelloWorld

    React Native看起来很像React,只不过其基础组件是原生组件而非web组件,。要理解React Nat...

网友评论

      本文标题:react组件

      本文链接:https://www.haomeiwen.com/subject/kkzgoftx.html