【发布时间】:2018-09-11 22:53:10
【问题描述】:
我刚开始学习 React 和 JavaScript。阅读文档和教程后,我查看了示例项目并尝试整理出我还没有得到的东西。
然后我看到render()functions 内部定义了一些函数,render() 函数外部定义了一些函数。
例如对于render()之外的:
handleClick(e) {
e.preventDefault();
e.target.parentElement.classList.toggle('open');
}
在 render() 内部...
const divider = (divider, key) => {
const classes = classNames( 'divider', divider.class);
return (<li key={key} className={ classes }></li>);
};
为什么它们看起来如此不同,为什么您希望在render() 内部和外部拥有一些功能?
编辑:
render() 之外的另一个函数示例:
hideMobile() {
if (document.body.classList.contains('sidebar-mobile-show')) {
document.body.classList.toggle('sidebar-mobile-show')
}
}
EDIT2:在另一个线程中,有人回答说,如果函数背后的逻辑很重,它应该在 render() 之外。但是你为什么还要在 render() 里面有函数呢?
【问题讨论】:
-
据我所知,
render()中的所有内容都是不断循环的。 -
@ionizer 好吧,我知道,但你为什么要在连续循环的函数中使用函数呢?
-
divider 称为 lambda 函数或匿名函数。有时,您希望它只定义和使用一次函数。在这种情况下,我相信您可以将
divider移到 render() 函数之外,因为它不引用任何外部范围变量。 -
@Goldi 是的,这对我来说可能是主要的原因。
标签: javascript reactjs