Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.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
Javascript 只需从另一个组件返回一个值_Javascript_Reactjs - Fatal编程技术网

Javascript 只需从另一个组件返回一个值

Javascript 只需从另一个组件返回一个值,javascript,reactjs,Javascript,Reactjs,想知道你们是否能帮忙。我试图创建一个通用组件,当调用它时,它将返回一个值 现行守则如下: import React, {Component} from 'react' class Clients extends Component { render () { var userEnum = { SMALL: 1, MEDIUM: 2, LARGE: 3, properties: { 1: {name: "Admin

想知道你们是否能帮忙。我试图创建一个通用组件,当调用它时,它将返回一个值

现行守则如下:

import React, {Component} from 'react'

class Clients extends Component {
   render () {
      var userEnum = {
      SMALL: 1,
      MEDIUM: 2,
      LARGE: 3,
      properties: {
        1: {name: "Admin", value: 1},
        2: {name: "Manager", value: 2},
        3: {name: "Standard", value: 3}
      }
    };

    const clientName = (value) => {
      return userEnum.properties[value].name
    }
    return null
  }
}

export default Clients
在另一个组件中,我尝试调用clientName函数(也完成了导入)

我希望返回值为“Manager”,但我得到了

类型错误:网页包\导入的模块\ 9 \帮助程序\客户端.a.clientName 这不是一个函数


函数clientName不是类的属性,而是呈现函数内部的本地函数,因此无法从外部访问

要解决此问题,您必须使clientName以及客户端对象的userEnum属性,例如在构造函数中:

import React,{Component}来自“React”
类客户端扩展组件{
建造师(道具){
超级(道具);
this.userEnum={
小:1,,
中等:2,
大型:3,
特性:{
1:{name:“Admin”,值:1},
2:{name:“Manager”,值:2},
3:{名称:“标准”,值:3}
}
};
}
函数clientName(值){
返回此.userEnum.properties[value].name
}
函数渲染(){
返回空
}
}

导出默认客户端
您正在
客户端
render
方法中声明函数
clientName
。此函数只能在其作用域内访问,即
render
方法。 要像访问函数一样,通过调用类
Clients
static方法
clientName
,您应该这样编写它:

import React, { Component } from 'react'

class Clients extends Component {
    static userEnum = {
        SMALL: 1,
        MEDIUM: 2,
        LARGE: 3,
        properties: {
            1: { name: "Admin", value: 1 },
            2: { name: "Manager", value: 2 },
            3: { name: "Standard", value: 3 }
        }
    };

    static clientName(value) {
        return Clients.userEnum.properties[value].name;
    }
    render() {

        return null;
    }
}

export default Clients
如果不打算使用该类呈现任何内容,则不需要react,只需创建一个实用程序/静态类,如下所示:

export default class Clients {
    static userEnum = {
        SMALL: 1,
        MEDIUM: 2,
        LARGE: 3,
        properties: {
            1: { name: "Admin", value: 1 },
            2: { name: "Manager", value: 2 },
            3: { name: "Standard", value: 3 }
        }
    };

    static clientName(value) {
        return Clients.userEnum.properties[value].name;
    }
}

什么是
userEnum
?(不是危险的回答)。为什么
Client
是一个react组件?像使用常规类一样使用Client,而不是组件。组件中的渲染功能需要jsx标记的返回值。您是否需要精确反应组件?工作非常完美!需要将static clientName(value)=>{更改为static clientName(value){对于后者是的,对不起,我后来编辑了,我忘记删除第二个示例中的箭头。
export default class Clients {
    static userEnum = {
        SMALL: 1,
        MEDIUM: 2,
        LARGE: 3,
        properties: {
            1: { name: "Admin", value: 1 },
            2: { name: "Manager", value: 2 },
            3: { name: "Standard", value: 3 }
        }
    };

    static clientName(value) {
        return Clients.userEnum.properties[value].name;
    }
}