在react官网里发现了这个东西,不知道以后能不呢个用的到,先记一下。

Children Props

这个就很常见了,在使用的时候嵌套组件进去,在Sidebar 或是 Dialog里比较常用到。

  1. function OtherOne(props){
  2. return<div style={{background:"orange"}}>
  3. <span>other one</span>
  4. {props.children}
  5. </div>
  6. }
  7. class Zuhe extends React.Component{
  8. constructor(props){
  9. super(props);
  10. }
  11. render(){
  12. return<div>
  13. <OtherOne>
  14. <h1>组合1</h1>
  15. </OtherOne>
  16. </div>
  17. }
  18. }

Other Props

我比较愿意称它们为奇怪的props,先看代码

  1. class Zuhe extends React.Component{
  2. constructor(props){
  3. super(props);
  4. }
  5. render(){
  6. return<div>
  7. <OtherOne>
  8. <h1>组合1</h1>
  9. </OtherOne>
  10. <OtherTwo
  11. left={<Left/>}
  12. right={<Right/>}
  13. left1 = {<div>left</div>}
  14. right2 = {<div>right</div>}
  15. />
  16. </div>
  17. }
  18. }
  19. function OtherTwo (props){
  20. console.log('other two props',props)
  21. return <div style={{border:'1px solid #eee'}}>
  22. <span> other two</span>
  23. <div style={{width:200,height:200}}>
  24. <div style={{float:"left"}}>
  25. {props.left1}
  26. </div>
  27. <div style={{float:"left"}}>
  28. {props.left}
  29. </div>
  30. <div style={{float:"right"}}>
  31. {props.right2}
  32. </div>
  33. <div style={{float:"right"}}>
  34. {props.right}
  35. </div>
  36. </div>
  37. </div>
  38. }
  39. function Left (props){
  40. return <div style={{border:'1px solid red'}}>
  41. i am left
  42. </div>
  43. }
  44. function Right (props){
  45. return <div style={{border:'1px solid green'}}>
  46. i am right
  47. </div>
  48. }

我一开始以为只能传 left,right属性,没想到它完全是自定义的。
可以理解为,用props传过去一个组件 😺!!是不是很牛
但是可以这么理解, 之类的react元素本身就是对象(object),可以把它们当作props像其他数据一样传递(来自官网解释)。
好像也挺对的。
我们可以看到此时的props,确实传来的是对象:
image.png

拓展

在上面的内容中,还可以简单窥探下react 元素对象的结构,就是把一些Dom转换成了啥样对像给react解析。
image.png
image.png
一级一级的往下写,文案也算。我以前学过这些的,生气,全忘了,有时间还要再整理出来。