React入門(mén)(二)組件

本節(jié)知識(shí)點(diǎn)

(1)React組件化

(2)React父子組件傳值

(一)組件

在React中組件都是對(duì)應(yīng)的一個(gè)個(gè)類(lèi),每一個(gè)js文件都可以代表一個(gè)組件。
組件之間引用的時(shí)候必須要通過(guò)import而且首字母必須要大寫(xiě)

import List from './list'
class App extends Component {
 render() {
    return (
      <Fragment>
        {/*這就是注釋*/}
        <input value={this.state.value2} onChange={this.change.bind(this)} />
        <button onClick={this.tijiao.bind(this)}>提交</button>
        <ul>
          {this.state.list.map((item, index) => {
            return (
              <List
                content={item}
                index={index}
                deletedate={this.deleteone.bind(this)}
                key={index}
              />
            )
          })}
        </ul>
      </Fragment>
    )
  }
}

父組件給子組件傳值

傳遞的值可以是方法(記住綁定this),也可以是值

子組件修改父組件傳遞過(guò)來(lái)的值

必須依賴(lài)父組件傳遞過(guò)來(lái)的方法
第一步父組件把方法傳遞過(guò)來(lái)。
第二部子組件在調(diào)用
下面這個(gè)示例就是父組件把deleteone方法以deletedate形式傳遞給了子組件
子組件接受后調(diào)用的時(shí)候就是this.props.deledate
子組件

import React, { Component } from 'react'
class list extends Component {
  constructor(props) {
    super(props)
    this.state = {}
  }
  render() {
    return <div onClick={this.deleteone.bind(this)}>{this.props.content}</div>
  }
  deleteone() {
    let value = this.props.index
    console.log(value)
    this.props.deletedate(value)
  }
}

export default list

父組件 注意看deleteone

import React, { Component, Fragment } from 'react'
import List from './list'
class App extends Component {
  constructor(props) {
    super(props)
    this.state = {
      value2: '請(qǐng)輸入要輸入的值',
      list: []
    }
  }
  render() {
    return (
      <Fragment>
        {/*這就是注釋*/}
        <input value={this.state.value2} onChange={this.change.bind(this)} />
        <button onClick={this.tijiao.bind(this)}>提交</button>
        <ul>
          {this.state.list.map((item, index) => {
            return (
              <List
                content={item}
                index={index}
                deletedate={this.deleteone.bind(this)}
                key={index}
              />
            )
          })}
        </ul>
      </Fragment>
    )
  }
  change(e) {
    console.log(e.target.value)
    this.setState({
      value2: e.target.value
    })
  }
  tijiao() {
    let list2 = [...this.state.list, this.state.value2]
    this.setState({
      list: list2,
      value2: ''
    })
  }
  deleteone(index) {
    console.log(index)
    let list2 = [...this.state.list]
    list2.splice(index, 1)
    this.setState({
      list: list2
    })
  }
}

export default App

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容