gpt4 book ai didi

javascript - JS 中的嵌套函数

转载 作者:行者123 更新时间:2023-11-30 07:04:17 26 4
gpt4 key购买 nike

我试图理解 reactjs 中的一些概念,但我无法理解函数的嵌套。我创建了以下示例来调查我的问题。

在下面的示例中,我正在渲染一些内容,其值来自一系列嵌套函数。但是,我收到错误“未捕获的类型错误:无法读取未定义的属性‘renderInnerContent’”。你能帮我了解发生了什么以及如何解决这个问题吗?我的主要动机是了解如何将事物抽象为不同的功能。

import React, { Component } from 'react';

export default class MyComponent extends Component {
renderInnerContent() {
return (
<div>Innercontent</div>
)
}

renderContent() {
let data = ["a","b","c"];
const displaydata = data.map(function(point){
return (
<div key={point}>{this.renderInnerContent()}</div>
)
});
return (
<div>{displaydata}</div>
)
}

render() {
return (
<div>{this.renderContent()}</div>
)
}
}

最佳答案

this 未在该函数的上下文中定义:

function(point){
return (
<div key={point}>{this.renderInnerContent()}</div>
)
}

因为是新函数。您有不同的选项将 this 传递给该函数:

1- Fat arrow function :

renderContent() {
let data = ["a","b","c"];
const displaydata = data.map((point) => {
return (
<div key={point}>{this.renderInnerContent()}</div>
)
});
return (
<div>{displaydata}</div>
)
}

2- 定义一个变量:

renderContent() {
let data = ["a","b","c"];
let _this = this;
const displaydata = data.map(function(point){
return (
<div key={point}>{_this.renderInnerContent()}</div>
)
});
return (
<div>{displaydata}</div>
)
}

3- 使用 bind :

renderContent() {
let data = ["a","b","c"];
const displaydata = data.map(function(point){
return (
<div key={point}>{this.renderInnerContent()}</div>
)
}.bind(this));
return (
<div>{displaydata}</div>
)
}

PS:不确定这些在 React 中是否有效。

关于javascript - JS 中的嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37097598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com