gpt4 book ai didi

reactjs - 在 ReactJS 中显示/隐藏组件

转载 作者:行者123 更新时间:2023-12-03 12:59:39 24 4
gpt4 key购买 nike

我们现在在使用 React 时遇到了一些问题,但这有点归结为我们使用 React 的方式之一。

我们应该如何显示/隐藏子组件?

这就是我们编码的方式(这只是我们组件的片段)...

_click: function() {
if ($('#add-here').is(':empty'))
React.render(<Child />, $('#add-here')[0]);
else
React.unmountComponentAtNode($('#add-here')[0]);
},
render: function() {
return(
<div>
<div onClick={this._click}>Parent - click me to add child</div>
<div id="add-here"></div>
</div>
)
}

最近我一直在阅读一些例子,就像它应该是这样的:

getInitialState: function () {
return { showChild: false };
},
_click: function() {
this.setState({showChild: !this.state.showChild});
},
render: function() {
return(
<div>
<div onClick={this._click}>Parent - click me to add child</div>
{this.state.showChild ? <Child /> : null}
</div>
)
}

我应该使用 React.render() 吗?它似乎阻止了各种事情,例如 shouldComponentUpdate 级联到子级以及 e.stopPropagation...

最佳答案

我提供了一个遵循第二种方法的工作示例。更新组件的状态是显示/隐藏子组件的首选方式。

假设您有这个容器:

<div id="container">
</div>

您可以使用现代 Javascript(ES6,第一个示例)或经典 JavaScript(ES5,第二个示例)来实现组件逻辑:

使用 ES6 显示/隐藏组件

Try this demo live on JSFiddle

class Child extends React.Component {
render() {
return (<div>I'm the child</div>);
}
}

class ShowHide extends React.Component {
constructor() {
super();
this.state = {
childVisible: false
}
}

render() {
return (
<div>
<div onClick={() => this.onClick()}>
Parent - click me to show/hide my child
</div>
{
this.state.childVisible
? <Child />
: null
}
</div>
)
}

onClick() {
this.setState(prevState => ({ childVisible: !prevState.childVisible }));
}
};

React.render(<ShowHide />, document.getElementById('container'));

使用 ES5 显示/隐藏组件

Try this demo live on JSFiddle

var Child = React.createClass({
render: function() {
return (<div>I'm the child</div>);
}
});

var ShowHide = React.createClass({
getInitialState: function () {
return { childVisible: false };
},

render: function() {
return (
<div>
<div onClick={this.onClick}>
Parent - click me to show/hide my child
</div>
{
this.state.childVisible
? <Child />
: null
}
</div>
)
},

onClick: function() {
this.setState({childVisible: !this.state.childVisible});
}
});

React.render(<ShowHide />, document.body);

关于reactjs - 在 ReactJS 中显示/隐藏组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913387/

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