Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何使组件在其接受的道具中明确显示?_Reactjs - Fatal编程技术网

Reactjs 如何使组件在其接受的道具中明确显示?

Reactjs 如何使组件在其接受的道具中明确显示?,reactjs,Reactjs,在React组件构造函数接受哪些参数时,是否有明确的做法 查看下面这样的组件,我无法立即判断需要传递给构造函数什么来初始化组件 相反,我需要在组件主体中搜索特定的道具,或者检查组件之前是如何初始化的(如果有) 您可以显式显示组件接受的道具,包括它们的类型 MenuItem.propTypes = { name: PropTypes.string // optional string }; 您甚至可以根据需要定义它们: MenuItem.propTypes = { name: PropT

在React组件构造函数接受哪些参数时,是否有明确的做法

查看下面这样的组件,我无法立即判断需要传递给构造函数什么来初始化组件

相反,我需要在组件主体中搜索特定的道具,或者检查组件之前是如何初始化的(如果有)


您可以显式显示组件接受的道具,包括它们的类型

MenuItem.propTypes = {
  name: PropTypes.string // optional string
};
您甚至可以根据需要定义它们:

MenuItem.propTypes = {
  name: PropTypes.string.isRequired // required string
};
请确保导入库:

import PropTypes from 'prop-types';
  • 更多信息请参阅

您可以明确显示组件接受的道具,包括它们的类型

MenuItem.propTypes = {
  name: PropTypes.string // optional string
};
您甚至可以根据需要定义它们:

MenuItem.propTypes = {
  name: PropTypes.string.isRequired // required string
};
请确保导入库:

import PropTypes from 'prop-types';
  • 更多信息请参阅

如果您主要关心可见性,那么最好只编写功能组件,因为不再需要任何类组件:

const MenuItem = ({name}) => (
    <div>{name}</div>
)
const MenuItem=({name})=>(
{name}
)
购买解构参数列表中的道具,只需查看函数定义,就可以轻松地看到正在立即使用哪些道具。根据我编写100多个组件的经验,功能组件通常更简洁、更容易掌握并减少样板代码


除此之外,javascript仍然是一种脚本语言,这意味着任何东西都可以在运行时传递。或者使用typescript可以帮助您完成自动完成和类型检查。

如果您主要关心的是可见性,那么最好只编写功能组件,因为不再需要任何类组件:

const MenuItem = ({name}) => (
    <div>{name}</div>
)
const MenuItem=({name})=>(
{name}
)
购买解构参数列表中的道具,只需查看函数定义,就可以轻松地看到正在立即使用哪些道具。根据我编写100多个组件的经验,功能组件通常更简洁、更容易掌握并减少样板代码


除此之外,javascript仍然是一种脚本语言,这意味着任何东西都可以在运行时传递。或者使用typescript可以帮助您自动完成和类型检查。

有几个选项可以键入您的道具

第一个是React PropTypes,它的工作原理如下:

import PropTypes from 'prop-types';

class MenuItem extends React.Component {
     constructor(props) {
         super(props)
    }

    render() {
        return <div name={this.props.name}></div>
    }
}

MenuItem.propTypes = {
  name: PropTypes.string.isRequired
}

从“道具类型”导入道具类型;
类MenuItem扩展了React.Component{
建造师(道具){
超级(道具)
}
render(){
返回
}
}
MenuItem.propTypes={
名称:PropTypes.string.isRequired
}
您只需将道具的名称和类型写入组件类的属性“propTypes”中

当您想要键入组件道具时,React PropTypes是一个很好的解决方案

还有另一种解决方案,类似于Typescript的Javascript风格

在React应用程序上设置Typescript后,您可以将Typescript与组件一起使用,如下所示:

interface IMenuItem {
  name: string;
}

class MenuItem extends React.Component<IMenuItem> {
     constructor(props) {
         super(props)
    }

    render() {
        return <div name={this.props.name}></div>
    }
}
const MenuItem = ({name}) => (
    <div>{name}</div>
)
接口IMenuItem{
名称:字符串;
}
类MenuItem扩展了React.Component{
建造师(道具){
超级(道具)
}
render(){
返回
}
}
Typescript的优点是,您可以键入每个变量、每个状态、每个道具、所有东西

然而,这个解决方案在时间上是昂贵的,因为你必须很好地学习Typescript,并且你必须正确地键入应用程序的每一部分

最后,如果您只想让IDE告诉您可以使用哪些道具,而无需键入它们,那么您可以在道具上使用对象分解,并使用如下功能组件:

interface IMenuItem {
  name: string;
}

class MenuItem extends React.Component<IMenuItem> {
     constructor(props) {
         super(props)
    }

    render() {
        return <div name={this.props.name}></div>
    }
}
const MenuItem = ({name}) => (
    <div>{name}</div>
)
const MenuItem=({name})=>(
{name}
)

希望这会有帮助

有几个选项可用于键入道具

第一个是React PropTypes,它的工作原理如下:

import PropTypes from 'prop-types';

class MenuItem extends React.Component {
     constructor(props) {
         super(props)
    }

    render() {
        return <div name={this.props.name}></div>
    }
}

MenuItem.propTypes = {
  name: PropTypes.string.isRequired
}

从“道具类型”导入道具类型;
类MenuItem扩展了React.Component{
建造师(道具){
超级(道具)
}
render(){
返回
}
}
MenuItem.propTypes={
名称:PropTypes.string.isRequired
}
您只需将道具的名称和类型写入组件类的属性“propTypes”中

当您想要键入组件道具时,React PropTypes是一个很好的解决方案

还有另一种解决方案,类似于Typescript的Javascript风格

在React应用程序上设置Typescript后,您可以将Typescript与组件一起使用,如下所示:

interface IMenuItem {
  name: string;
}

class MenuItem extends React.Component<IMenuItem> {
     constructor(props) {
         super(props)
    }

    render() {
        return <div name={this.props.name}></div>
    }
}
const MenuItem = ({name}) => (
    <div>{name}</div>
)
接口IMenuItem{
名称:字符串;
}
类MenuItem扩展了React.Component{
建造师(道具){
超级(道具)
}
render(){
返回
}
}
Typescript的优点是,您可以键入每个变量、每个状态、每个道具、所有东西

然而,这个解决方案在时间上是昂贵的,因为你必须很好地学习Typescript,并且你必须正确地键入应用程序的每一部分

最后,如果您只想让IDE告诉您可以使用哪些道具,而无需键入它们,那么您可以在道具上使用对象分解,并使用如下功能组件:

interface IMenuItem {
  name: string;
}

class MenuItem extends React.Component<IMenuItem> {
     constructor(props) {
         super(props)
    }

    render() {
        return <div name={this.props.name}></div>
    }
}
const MenuItem = ({name}) => (
    <div>{name}</div>
)
const MenuItem=({name})=>(
{name}
)

希望这会有帮助

反应类型?这些类型有用吗?有用