You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.3 KiB

2 years ago
  1. import React from "react"
  2. // App 为父组件,Son 为子组件
  3. // 函数式的 Son
  4. function SonF (props) {
  5. // props 是一个对象,里面存着通过父组件传入的所有数据
  6. return (
  7. <div>函数子组件
  8. {/*
  9. <div>函数子组件{props.list}</div> */}
  10. {props.list.map(item => <p key={item}> {item} </p>)}
  11. {/* 对象传递 */}
  12. {props.userInfo.name}{<br />}
  13. {/* 传递函数 */}
  14. <button onClick={props.getMes}>触发父组件传入的函数</button>{<br />}
  15. {/* 传递 JSX(模板)*/}
  16. {props.child}
  17. </div>
  18. )
  19. }
  20. // 类组件的 App
  21. class App extends React.Component {
  22. // 准备数据
  23. state = {
  24. list: [1, 2, 3],
  25. userInfo: {
  26. name: 'Ken',
  27. age: 20
  28. }
  29. }
  30. getMes = () => {
  31. console.log('父组件中的函数')
  32. }
  33. render () {
  34. return (
  35. <div>
  36. {/* 在子组件身上绑定属性,属性名可以自定义,保持语义化 */}
  37. <SonF
  38. list={this.state.list}
  39. userInfo={this.state.userInfo}
  40. getMes={this.getMes}
  41. child={<span>this is span</span>}
  42. />
  43. </div>
  44. )
  45. }
  46. }
  47. export default App