• react-组件间的传值


    父组件向子组件传值

    父组件通过属性进行传递,子组件通过props获取

    //父组件
    class CommentList extends Component{
       render(){
    return(
    <div>
    <Comment comment = {information} />
    </div>
    )
    }
    }
    
    //子组件
    class Comment extends Component{
    render(){
    return(
    <div>
    <p>{this.props.comment}</p>
    </div>
    )
    }
    }

    父组件CommentList 引用子组件Comment时设置comment属性传递information,

    再组件comment中通过this.props.comment获取到information的值

    子组件向父组件传值

    通过回调进行传递数据

    //父组件
    export default class Home extends Component {
      constructor(props){
        super()
        this.state={
          data:"请选择你喜欢的课程"
        }
      }
    
      aa=(item)=>{
        this.setState({
          data:item
        })
      }
    
      render() {
        console.log(this.state.data)
        return (
          <div>
            <div>
              <input type="text" placeholder={this.state.data} /></div>
              <Item  a={this.aa} />
          </div>
        )
      }
    }
    //子组件
    export default class Item extends Component {
      constructor(props){
        super()
        this.state={
          data:[],
          state:false
        }
      }
      render() {
        // console.log(this.props)
        return (
          <div style={{display:this.state.state?"none":"block"}}>
            {
              this.state.data.map((val,index)=>{
                return <div key={index} className="d1" onClick={()=>{
                  this.setState({
                    data:this.state.data,
                    state:!this.state.state
                  })
                  this.props.a(val.title)
                }}>{val.title}</div>
              })
            }
          </div>
        )
      }
      // 发送请求
      componentDidMount(){
        axios.get("http://localhost:3000/data.json").then((response)=>{
          console.log(response.data.data)
         this.setState({
           data:response.data.data
         })
        }).catch((error)=>{
          console.log(error)
        })
      }
    }
    //json文件  data.json
    {
      "data": [
        {
          "id": "0",
          "title": "Vue.js"
        },
        {
          "id": "1",
          "title": "AngularJS"
        },
        {
          "id": "2",
          "title": "JavaScript"
        },
        {
          "id": "3",
          "title": "React.js"
        }
      ]
    }
    兄弟组件之间的传值
    通过相同的父组件进行传递数据
    子组件A通过回调函数形式将数据传给父组件,接着父组件通过属性将数据传递给子组件B

    通过发布/订阅进行传递

    在子组件A中 commentDidMount函数中,发布事件,在子组件B中commentDidMount函数中对事件进行监听

    使用context进行传递

    使用redux对state进行统一管理

  • 相关阅读:
    Android studio ocr初级app开发问题汇总(含工程代码)
    面试题思路,25匹马 5个跑道取前三,前五,最少比赛次数--七次
    中国计算机学会推荐国际学术会议和期刊目录(CCF)2019年
    swift 数组部分排序
    SceneKit下关于修改SCNNode 的Shader展示自定义图形
    汇编语言实现字母下落效果
    组合数计算-java
    miniblast_hash算法c语言实现
    日常开发知识点备忘
    骑士周游问题跳马问题C#实现(附带WPF工程代码)
  • 原文地址:https://www.cnblogs.com/pan-pan309/p/12069961.html
Copyright © 2020-2023  润新知