Reactjs 在react中展开div,类似于jQuery展开方法
我正在使用React JSX。我有一个className=“shadow”的div,如下所示Reactjs 在react中展开div,类似于jQuery展开方法,reactjs,conditional,unwrap,Reactjs,Conditional,Unwrap,我正在使用React JSX。我有一个className=“shadow”的div,如下所示 <div className="main"> <div className="shadow" style={{backgroundColor: "#FFFFFF"}}> <div id="wrapper"> Hello </div> </div> </div> 你好 基于某个条件为true或
<div className="main">
<div className="shadow" style={{backgroundColor: "#FFFFFF"}}>
<div id="wrapper">
Hello
</div>
</div>
</div>
你好
基于某个条件为true或false,我希望删除className=“shadow”的div,但希望保持每个div(包括id=“wrapper”的div)完好无损。类似于jQuery的unwrap()方法。
与下面所写内容类似的内容,但没有那么多代码行
if ( currentPage==="login") {
<div className="main">
<div id="wrapper">
Hello
</div>
</div>
}
else {
<div className="main">
<div className="shadow" style={{backgroundColor: "#FFFFFF"}}>
<div id="wrapper">
Hello
</div>
</div>
</div>
}
if(当前页面==“登录”){
你好
}
否则{
你好
}
我检查了和,但没有得到我想要的。也许可以帮助您根据您所在的页面更改
类名,因为您尝试使用react router
根据您所在的路径显示不同的组件会更好
使用类似于此的代码,希望能对您有所帮助。
const App=React.createClass({
更改页(下一页){
this.setState({page:nextPage})
},
getInitialState(){
返回({
页面:“登录”
})
},
render(){
返回(
你好,来自{this.state.page}页面。
转到登录页面。
转到主页。
)
}
})
ReactDOM.render(,document.getElementById('app'))
div.shadow{背景色:#000000;颜色:#ffffff}
也许可以帮助您根据您所在的页面更改类名,因为您尝试做的是更好地使用react router
根据您所在的路径显示不同的组件
使用类似于此的代码,希望能对您有所帮助。
const App=React.createClass({
更改页(下一页){
this.setState({page:nextPage})
},
getInitialState(){
返回({
页面:“登录”
})
},
render(){
返回(
你好,来自{this.state.page}页面。
转到登录页面。
转到主页。
)
}
})
ReactDOM.render(,document.getElementById('app'))
div.shadow{背景色:#000000;颜色:#ffffff}
这是一个很好的使用案例
如果需要在
和
上捕获道具,请执行以下操作。注意:我不认为您可以将道具传递到正常的DOM元素中,比如
标记。但是如果它们是以大写字母开头的其他组件,那么我相信使用{…this.props}
传递props会很好
const HOC = (currentPage, Shadow, Wrapper) => (
class extends Component {
render () {
return (
<div className="main">
{
currentPage === 'login'
? <Shadow {...this.props} />
: <Shadow {...this.props}><Wrapper {...this.props}>{this.props.children}</Wrapper></Shadow>
}
</div>
)
}
}
)
const HOC=(当前页面、阴影、包装)=>(
类扩展组件{
渲染(){
返回(
{
currentPage==“登录”
?
:{this.props.children}
}
)
}
}
)
这是一个很好的使用案例
如果需要在
和
上捕获道具,请执行以下操作。注意:我不认为您可以将道具传递到正常的DOM元素中,比如
标记。但是如果它们是以大写字母开头的其他组件,那么我相信使用{…this.props}
传递props会很好
const HOC = (currentPage, Shadow, Wrapper) => (
class extends Component {
render () {
return (
<div className="main">
{
currentPage === 'login'
? <Shadow {...this.props} />
: <Shadow {...this.props}><Wrapper {...this.props}>{this.props.children}</Wrapper></Shadow>
}
</div>
)
}
}
)
const HOC=(当前页面、阴影、包装)=>(
类扩展组件{
渲染(){
返回(
{
currentPage==“登录”
?
:{this.props.children}
}
)
}
}
)
我猜当当前页面未登录时,此方法不允许我从dom中删除类为“shadow”的div。它只会从该div中添加/删除类“shadow”。我想这个方法不会让我在当前页面未登录时从dom中删除类为“shadow”的div。它将只添加/删除该div中的类“shadow”。这个解决方案似乎对我有效。但是,不幸的是,我没有在div中使用id为“wrapper”的“Hello”,而是使用了。此内容组件根据“currentPage”返回不同的组件。因此,在某个地方,它迷失在一个无限循环中,永远无法呈现所需的结果。“这很好,但以currentPage为道具的内容造成了问题,但我也不知道为什么会发生这种情况。@abhi,已更新。”。您可以使用{this.props.children}
呈现
的子对象。如果您有任何问题,请告诉我。它仍然以相同的方式运行,从不在页面上呈现内容。因此,我决定使用if-else条件呈现的传统方法。@abhi,我已经在我的答案中测试了代码,并且知道它是有效的。请确认您1)正在使用我上次更新中概述的类语法,2)正在render()
方法中使用{this.props.children}
。是的,我在render方法中使用了类语法以及{this.props.children}。我不能在这里发布我的完整代码,但我想在我漫长而复杂的代码中的某个地方,它会丢失并且无法呈现。这个解决方案似乎对我很有效。但是,不幸的是,我没有在div中使用id为“wrapper”的“Hello”,而是使用了。此内容组件根据“currentPage”返回不同的组件。因此,在某个地方,它迷失在一个无限循环中,永远无法呈现所需的结果。“这很好,但以currentPage为道具的内容造成了问题,但我也不知道为什么会发生这种情况。@abhi,已更新。”。您可以使用{this.props.children}
呈现
的子对象。如果您有任何问题,请告诉我。它仍然以相同的方式运行,从不在页面上呈现内容。因此,我决定使用if-else条件呈现的传统方法。@abhi,我已经在我的答案中测试了代码,并且知道它是有效的。请确认您1)正在使用我上次更新中概述的类语法,2)正在使用
const HOC = (currentPage, Shadow, Wrapper) => (
class extends Component {
render () {
return (
<div className="main">
{
currentPage === 'login'
? <Shadow />
: <Shadow><Wrapper>{this.props.children}</Wrapper></Shadow>
}
</div>
)
}
}
)
const HOC = (currentPage, Shadow, Wrapper) => (
class extends Component {
render () {
return (
<div className="main">
{
currentPage === 'login'
? <Shadow {...this.props} />
: <Shadow {...this.props}><Wrapper {...this.props}>{this.props.children}</Wrapper></Shadow>
}
</div>
)
}
}
)