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;
}
}