组件属性中第二个自动生成的元素是什么?

时间:2018-06-29 15:50:52

标签: javascript reactjs

创建React组件时,会自动包含

props.children。给出这样的内容:

const obj = {
  a: 'val'
}

const Parent = () => <Child obj={obj} />

const Child = props => <GrandChild/>

const GrandChild = (...props) => <div>{JSON.stringify(props)}</div>

将打印:[{},{}]

更改Child

const Child = props => <GrandChild>child element</GrandChild>

将打印:[{"children":"child element"},{}]

所以我想第一个对象是为props.children保留的

更改Child

const Child = props => <GrandChild a="sth else">child element</GrandChild>

将打印[{"a":"sth else","children":"child element"},{}]

那里仍然有一个空物体。删除...上的Grandchild会同时删除包围的数组和最后一个元素。

这个额外的元素是什么?为什么通过消除价差将其消除?

1 个答案:

答案 0 :(得分:1)

使用propslegacy context调用无状态组件。

const GrandChild = (props, context) => {   
  return <div>{context.something}</div>
}

GrandChild.contextTypes = {
  something: PropTypes.string
}