Javascript 如果我们不小心发现';t使用';()';调用方法之后
如果我们在调用函数后忘记放括号,比如Javascript 如果我们不小心发现';t使用';()';调用方法之后,javascript,reactjs,Javascript,Reactjs,如果我们在调用函数后忘记放括号,比如 renderContent(){} 我们想把它称为div <div>{this.renderContent()}</div> {this.renderContent()} 如果我们忘了写()? 它不显示错误,在屏幕上不显示任何内容 当我们在呼叫后放入()时,它显示如果我遇到这样的问题,我如何知道我没有将()放入哪里 如果您需要更多信息,请让我知道在这种特定情况下,它将打印函数代码。例如,如果你有一个函数 renderConten
renderContent(){}
我们想把它称为div
<div>{this.renderContent()}</div>
{this.renderContent()}
如果我们忘了写()
?它不显示错误,在屏幕上不显示任何内容
当我们在呼叫后放入
()
时,它显示如果我遇到这样的问题,我如何知道我没有将()
放入哪里如果您需要更多信息,请让我知道在这种特定情况下,它将打印函数代码。例如,如果你有一个函数
renderContent = () => {
console.log("hi");
return <p>Hello world</p>;
}
函数的内容是什么
import React, { Component } from 'react';
class Content extends Component {
renderContent = () => <h1>Hi</h1>
render() {
return (
<div>{this.renderContent()}</div>
)
}
}
export default Content;
它在屏幕上没有显示任何内容,控制台中会出现错误:警告:函数作为子函数无效。如果返回组件而不是从渲染返回组件,则可能会发生这种情况。或者您可能想调用此函数而不是返回它。
因为它应该返回函数的结构(如果在普通javascript中),但在React js中不允许这样做。
()
指示对函数的调用。如果没有()
,您只得到了对函数的引用,这不是一个错误。“在屏幕上什么都不显示”应该足以表明您忘记了什么。从技术上讲,这不是一个错误,因此代码仍然可以正常工作。ReactJS中必须有一个保护,因为如果使用函数引用并将其转换为文本,无论是使用+'
还是toString()
,它都会显示函数的代码“我如何知道我没有放在哪里()”-通过测试代码并验证结果,以相同的方式检测任何类似的类型或逻辑错误。手动或使用自动测试工具。缺少()
本身并不是一个错误,很多时候你不想包含这些。JavaScript本身不知道您应该做什么,只知道您做了什么。这取决于你去测试和验证。对。您还可以说,renderContent
是Function
类型的变量。与任何变量一样,如果省略括号,它将只呈现其值/内容(在本例中为函数的定义)。但是当你包含括号时,它就变成了一个表达式,它将执行函数并产生函数的返回值。是的,这是一个更好的解释方法。谢谢你的指点。
import React, { Component } from 'react';
class Content extends Component {
renderContent = () => <h1>Hi</h1>
render() {
return (
<div>{this.renderContent()}</div>
)
}
}
export default Content;
import React, { Component } from 'react';
class Content extends Component {
renderContent = () => <h1>Hi</h1>
render() {
return (
<div>{this.renderContent}</div>
)
}
}
export default Content;