作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个位于 render(){}
中的函数
需要将该函数从渲染中移出。
但是当我将其移动到 class
主体内部时,调用该函数时会出现错误。
代码复制:
这是函数outherElementType
render() {
const outerElementType = forwardRef((props, ref) => (
<div ref={ref} onClick={(e) => this.handleSelectDoc(e)} {...props} role="button" />
));
这是传递outherElementType
的地方:
<AutoSizer>
{({ height }) => (
<List
itemData={this.props.data}
itemSize={150}
outerElementType={outerElementType}
>
{NewsRenderer}
</List>
)}
</AutoSizer>
我尝试将 outherElementType
移动到组件外部,但问题是这个 this.handleSelectDoc(e)
函数从组件主体传递到此函数。
const outerElementType = forwardRef((props, ref) => (
<div ref={ref} onClick={(e) => this.handleSelectDoc(e)} {...props} role="button" />
));
最佳答案
如果将组件移到 render
之外,但仍在 class 组件
内部,那么您需要使用 this
关键字来引用您创建的“新函数”
class MyComponent extends Component {
outerElementType = forwardRef((props, ref) => (
<div ref={ref} onClick={(e) => this.handleSelectDoc(e)} {...props} role="button" />
));
render() {
return <AutoSizer>
{({ height }) => (
<List
itemData={this.props.data}
itemSize={150}
outerElementType={this.outerElementType}
>
{NewsRenderer}
</List>
)}
</AutoSizer>
}
}
关于javascript - react : How to move function outside of component body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57768360/
我是一名优秀的程序员,十分优秀!