反应组件与功能
React component with function
我对一些 div 有反应 class,我想从一个函数中添加一些额外的 HTML。
当我 运行 执行此操作时,我收到一条错误消息,指出未定义 OverlayButton。我的灵感来自HERE
我知道我可以将 OverlayButton 拆分成一个单独的 class,但它只是一个没有逻辑的愚蠢按钮。
export default class Widget extends React.Component {
OverlayButton(props) {
return (
<div
className={props.className}
onClick={props.handler}
ref='select'>
<i className="material-icons">
{props.icon}
</i>
</div>
)
}
render() {
return (
<div>
<div className="photo-widget-content"></div>
<div className="photo-widget-header"></div>
<img src={this.props.photo.url}></img>
return <OverlayButton icon="check" handler="" className=""/>
</div>
);
}
}
如果您想将 OverlayButton 作为函数(方法)使用,您需要在 {}
大括号内调用它:
export default class Widget extends React.Component {
OverlayButton(props) {
return (
<div
className={props.className}
onClick={props.handler}
ref='select'>
<i className="material-icons">
{props.icon}
</i>
</div>
)
}
render() {
return (
<div>
<div className="photo-widget-content"></div>
<div className="photo-widget-header"></div>
<img src={this.props.photo.url} />
{this.OverlayButton({
icon: 'check',
handler: function() {},
className: ''
})}
</div>
);
}
}
你快到了,只需将 <OverlayButton ... />
替换为 <this.OverlayButton ... />
严格来说,根据另一个答案(也是正确的),没有必要将其作为函数调用,因为您可以依靠 JSX 为您完成。
Here一个例子。
class Widget extends React.Component {
OverlayButton(props) {
return (
<div>
Button
</div>
);
}
render() {
return (
<div>
<this.OverlayButton />
</div>
);
}
}
ReactDOM.render(
<Widget />,
document.getElementById('container')
);
话虽如此,我可能不会将 OverlayButton
定义为 class 的实例方法,而是将其继续class 的顶部并将其简单地定义为一个函数...像这样:
const OverlayButton = (props)=> {
return (
<div>
Button
</div>
);
}
然后
class Widget extends React.Component {
...
render() {
return <OverlayButton ... />
}
}
我对一些 div 有反应 class,我想从一个函数中添加一些额外的 HTML。
当我 运行 执行此操作时,我收到一条错误消息,指出未定义 OverlayButton。我的灵感来自HERE
我知道我可以将 OverlayButton 拆分成一个单独的 class,但它只是一个没有逻辑的愚蠢按钮。
export default class Widget extends React.Component {
OverlayButton(props) {
return (
<div
className={props.className}
onClick={props.handler}
ref='select'>
<i className="material-icons">
{props.icon}
</i>
</div>
)
}
render() {
return (
<div>
<div className="photo-widget-content"></div>
<div className="photo-widget-header"></div>
<img src={this.props.photo.url}></img>
return <OverlayButton icon="check" handler="" className=""/>
</div>
);
}
}
如果您想将 OverlayButton 作为函数(方法)使用,您需要在 {}
大括号内调用它:
export default class Widget extends React.Component {
OverlayButton(props) {
return (
<div
className={props.className}
onClick={props.handler}
ref='select'>
<i className="material-icons">
{props.icon}
</i>
</div>
)
}
render() {
return (
<div>
<div className="photo-widget-content"></div>
<div className="photo-widget-header"></div>
<img src={this.props.photo.url} />
{this.OverlayButton({
icon: 'check',
handler: function() {},
className: ''
})}
</div>
);
}
}
你快到了,只需将 <OverlayButton ... />
替换为 <this.OverlayButton ... />
严格来说,根据另一个答案(也是正确的),没有必要将其作为函数调用,因为您可以依靠 JSX 为您完成。
Here一个例子。
class Widget extends React.Component {
OverlayButton(props) {
return (
<div>
Button
</div>
);
}
render() {
return (
<div>
<this.OverlayButton />
</div>
);
}
}
ReactDOM.render(
<Widget />,
document.getElementById('container')
);
话虽如此,我可能不会将 OverlayButton
定义为 class 的实例方法,而是将其继续class 的顶部并将其简单地定义为一个函数...像这样:
const OverlayButton = (props)=> {
return (
<div>
Button
</div>
);
}
然后
class Widget extends React.Component {
...
render() {
return <OverlayButton ... />
}
}