Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在react中展开div,类似于jQuery展开方法_Reactjs_Conditional_Unwrap - Fatal编程技术网

Reactjs 在react中展开div,类似于jQuery展开方法

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或

我正在使用React JSX。我有一个className=“shadow”的div,如下所示

<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>
      )
    }
  }
)