我有一个getNameByVal函数,我想在组件render()中调用它,错误消息TypeError:getNameByVal不是函数。我的代码如下。有什么问题吗?:
function getNameByVal(value){
switch(val){
case '0000':
return "Online";
case '0001':
return "In person";
...
}
class App extends Component{
....
render(){
return <div>
{this.state.checkedItems!==null?this.state.checkedItems.map(key=>getNameByVal(key)):[]}
</div>
}
答案 0 :(得分:0)
您的函数getNameByVal()似乎超出了render()的范围。
您可以做的是将函数声明为一个变量,该变量将允许您在Map中调用它。
这是将其声明为变量的方式:
const getNameByVal = (value) => {
switch(value){
case '0000':
return "Online";
case '0001':
return "In person";
}
}
将其放置在您的Rendor(){...}内或APP /组件的脚架内。然后您可以用相同的方式调用它
答案 1 :(得分:0)
将您的函数移入类内,如下所示,并使用this.getNavByVal
class App extends Component {
constuctor(props) {
super(props)
this.getNameByVal = this.getNameByVal.bind(this)
}
getNameByVal(value){
switch(val){
case '0000':
return "Online";
case '0001':
return "In person";
...
}
render(){
return <div>
{this.state.checkedItems!==null?this.state.checkedItems.map(key=>this.getNameByVal(key)):[]}
</div>
}
答案 2 :(得分:0)
如果我要编写这样的组件,则不会使用类,因此,如果这对您有用,这里是一个如何使用钩子进行操作的示例:https://codesandbox.io/embed/crazy-jones-2398c