Reactjs 如何对子组件执行道具类型验证?

Reactjs 如何对子组件执行道具类型验证?,reactjs,Reactjs,const Parent=({username,children})=>{ 让firstName=username.split(“”[0]; 让lastName=username.split(“”[1]; //注意:将{children}替换为React.cloneElement(children,{firstName,lastName}) 返回( `欢迎用户{lastName},{firstName}` {儿童} ); } const QuoteDisplay=({firstName,last

const Parent=({username,children})=>{
让firstName=username.split(“”[0];
让lastName=username.split(“”[1];
//注意:将{children}替换为React.cloneElement(children,{firstName,lastName})
返回(
`欢迎用户{lastName},{firstName}`
{儿童}
);
}
const QuoteDisplay=({firstName,lastName,randomQuote})=>{
返回(
`{firstName},{lastName}您当天的报价是:{randomQuote}`
);
}
QuoteDisplay.propTypes={
名字:React.PropTypes.string.isRequired,
lastName:React.PropTypes.string.isRequired,
randomQuote:React.PropTypes.string
}
类应用程序扩展了React.Component{
render(){
返回();
}
}
ReactDOM.render(,document.getElementById('app'))

理想情况下,你可以将道具传递给父母和孩子。所以我会像这样设置你的应用程序:

class App extends React.Component{
  render() {
    return (<Parent username="funny Tom" randomQuote="Solve it"/>);
    }
 }
类应用程序扩展了React.Component{
render(){
返回();
}
}
然后,家长会将这些道具传递到QuoteDisplay上

function Parent(props) {
 let firstName = props.username.split(" ")[0];
 let lastName = props.username.split(" ")[1];

 return (
  <div>
   <h1>`Welcome user {lastName}, {firstName}`</h1>
   <QuoteDisplay firstName={firstName} lastName={lastName} randomQuote={props.randomQuote} />
 </div>
 );
}
功能父级(道具){
让firstName=props.username.split(“”[0];
让lastName=props.username.split(“”[1];
返回(
`欢迎用户{lastName},{firstName}`
);
}
最后,QuoteDisplay接受了道具

function QuoteDisplay(props) {
   return(
     <h2>`{props.firstName}, {props.lastName} your quote for the day is: {props.randomQuote}`</h2>
   );
}
函数报价显示(道具){
返回(
`{props.firstName},{props.lastName}您当天的报价是:{props.randomQuote}`
);
}

是的,但如果您仔细观察,父级最终会传递名字和姓氏。您不能从父级内部调用QuoteDisplay有什么特殊原因吗?我知道这个示例过于简单,但我有许多子组件,但有一个公共父级,所有子级都需要使用一个公共属性。我不想把共同财产传给所有的孩子。QuoteDisplay只是这样一个孩子的例子。(我试图避免使用上下文)你也在试图避免传递道具吗?不,我在传递道具。