剧场模式
首页前端诱人的 react 视频教程-基础篇

诱人的 react 视频教程 - 基础篇 #6 通过 Props 传递数据

下载源码hfpp2012发布于React2978 次点击播放时长:11:22

学到的知识点:

  1. this.props

  2. this.props.children

  3. Typechecking With PropTypes https://reactjs.org/docs/typechecking-with-proptypes.html

src/App.js

import React, { Component } from 'react';

import Header from './components/Header';
import Home from './components/Home';

class App extends Component {
  render() {
    const user = {
      name: "Anna",
      hobbies: ["Sports", "Reading"]
    }
    return (
      <div className="container">
        <div className="row">
          <div className="col-xs-1 col-xs-offset-11">
            <Header />
          </div>
        </div>
        <div className="row">
          <div className="col-xs-1 col-xs-offset-11">
            <h1>Hello !!</h1>
          </div>
        </div>
        <div className="row">
          <div className="col-xs-1 col-xs-offset-11">
            <Home name={"Max"} age={12} user={user}>
              <p>I am child</p>
            </Home>
          </div>
        </div>
      </div>
    );
  }
}

export default App;

src/components/Home.js

import React, { Component } from 'react';

import PropTypes from 'prop-types';

export default class Home extends Component {
  render() {
    return (
      <div className="container">
        <div className="row">
          <div className="col-xs-1 col-xs-offset-11">
            <div>your name is {this.props.name}, your age is {this.props.age}</div>
            <div>
              <h4>hobbies</h4>
              <ul>
                {this.props.user.hobbies.map((hobby, i) => <li key={i}>{hobby}</li>)}
              </ul>
            </div>
            <div>{this.props.children}</div>
          </div>
        </div>
      </div>
    );
  }
}

Home.propTypes = {
  name: PropTypes.string,
  age: PropTypes.number,
  user: PropTypes.object,
  children: PropTypes.element.isRequired
};
7 条回复
  • wayyun #1

    提示给我的错误是: 无法读取未定义的属性“map”

  • hfpp2012 #2
    wayyun #10 回复

    是不是哪里打错了,是这个 this.props.user.hobbies

  • wayyun #3
    hfpp2012 #10 回复

    我前几次是手打的,后来就直接copy您的了,

  • hfpp2012 #4
    wayyun #10 回复

    你把 this.props 打出来看看喽,看有什么内容,再看是不是真传过来了

  • wayyun #5
    hfpp2012 #10 回复

    谢谢,找到问题了,app.js 定义user对象的时候把 hobbies 写成了 bobbies,已经解决了,谢谢

  • wangye #6

    我想问一下 再父组件用props 把一个对象传到子组件 在子组件中是否可以 用PropTypes 来验证对象中的一个字段 是否为number或者object 请大佬回复一下

  • hfpp2012 #7
    wangye #10 回复

    可以的

支付宝付款
订阅或购买扫码加我微信

加我微信:15014006126

相似的视频
诱人的 react 视频教程 - 基础篇 #5 输出动态数据

诱人的 react 视频教程 - 基础篇 #5 输出动态数据

免费播放时长:02:29

4638 次点击

诱人的 react 视频教程 - 基础篇 #12 组件间传值

诱人的 react 视频教程 - 基础篇 #12 组件间传值

免费播放时长:07:05

2525 次点击

诱人的 react 视频教程 - 基础篇 #2 create-react-app

诱人的 react 视频教程 - 基础篇 #2 create-react-app

免费播放时长:04:18

5269 次点击

诱人的 react 视频教程 - 基础篇 #10 无状态组件

诱人的 react 视频教程 - 基础篇 #10 无状态组件

免费播放时长:05:43

4850 次点击

诱人的 react 视频教程 - 基础篇 #9 react 如何更新 dom

诱人的 react 视频教程 - 基础篇 #9 react 如何更新 dom

免费播放时长:04:32

5579 次点击

© Rails365 | 隐私条款 | 服务条款 | 粤ICP备15004902号 | 在线学员:24

Top