gpt4 book ai didi

reactjs - 单击多个按钮时隐藏所有 div 并显示一个 div

转载 作者:行者123 更新时间:2023-12-03 14:06:21 25 4
gpt4 key购买 nike

我试图通过在 div 上隐藏/显示来在单个页面中容纳 3 个组件。但我并没有真正了解如何做到这一点。这是第一个 div。

<div>
<p>What is the type of your property?</p>
<button >Residence</button>

<button>Commercial</button>

<span style={{background:'transparent', border:'0', fontSize:'16px',color:'#ef3530'}}>Back</span>

<span style={{background:'transparent', border:'0', fontSize:'16px',color:'#ef3530'}}>Next</span>

</div>

仅当我单击“商业”或“下一步”按钮时,它才会进入第二个 div,第一个 div 将隐藏。

<div>
<p>What is the type of your commercial property?</p>

<button>Office</button>

<button>Restaurant</button>

<button >Outlet</button>
<span style={{background:'transparent', border:'0', fontSize:'16px',color:'#ef3530'}}>Back</span>

<span style={{background:'transparent', border:'0', fontSize:'16px',color:'#ef3530'}}>Next</span>
</div>

最后,如果我单击第一个 div 中的“餐厅”按钮和第二个 div 中除后退按钮之外的任何按钮,它将进入第三个 div,其他 div 将隐藏。这是第三个 div。

<div>

<div className='slider' style={{ marginTop:'165px',marginLeft:'319px',width:'700px',backgroundColor:'EF5350'}} >

<Slider min={850} max={5000} value={value} onChangeStart={this.handleChangeStart}
onChange={this.handleChange}
onChangeComplete={this.handleChangeComplete}
/>
<div className='value'>{value} Squarefeet</div>
<div style={{marginTop:'86px'}}>



<span onChange={this.handleChange} onClick={() => this.saveValue()} >Next</span>
<span onChange={this.handleChange} onClick={() => this.saveValue()} >Next</span>

</div>

</div>
</div>

我尝试这样做。但这是行不通的。

import React from 'react';
import Link from "next/link";
class Jh extends React.Component {
constructor() {
super();
this.state = {
shown: true,
hide: false
};
}

toggle() {
this.setState({
shown: !this.state.shown
});
}

toggles() {
this.setState({
shown: !this.state.hide
});
}

render() {
var shown = {
display: this.state.shown ? "block" : "none"
};

var hidden = {
display: this.state.shown ? "none" : "block"
}

return (
<div>
<button onClick={this.toggle.bind(this)} style={ shown }>
<div>
<p>What is the type of your property?</p>
<button >Residence</button>

<button>Commercial</button>

<span style={{background:'transparent', border:'0', fontSize:'16px',color:'#ef3530'}}>Back</span>

<span style={{background:'transparent', border:'0', fontSize:'16px',color:'#ef3530'}}>Next</span>

</div>



</button>

<button onClick={this.toggles.bind(this)} style={ hidden }>
<div>
<p>What is the type of your commercial property?</p>

<button>Office</button>

<button>Restaurant</button>

<button >Outlet</button>
<span style={{background:'transparent', border:'0', fontSize:'16px',color:'#ef3530'}}>Back</span>

<span style={{background:'transparent', border:'0', fontSize:'16px',color:'#ef3530'}}>Next</span>
</div>
</button>

</div>
)
}
}
export default Jh

我的方法应该是什么?

最佳答案

有很多模式可以实现“switch case”,我将尝试展示我最喜欢的模式:

对于 sipmlicity,我将使用通用用例。

直接前进

管理每个组件的可见状态:

return {visible && <CoolComponent id={1} />};
<小时/>

变相切换大小写

管理对象键的状态。 (当前计数器)

const countersPicker = {
counter1: <Counter id={1} />,
counter2: <Counter id={2} />,
coolComponent: <CoolComponent id={3} />
};

return {countersPicker[currentCounter]};

在这里您还可以对对象执行操作,例如添加 header :

  return {Object.entries(countersPicker).map(([key,component]) => 
<div key={key}>
<h1>Component key = {key}</h1>
{component}
</div>
)};
<小时/>

过滤子项

管理谓词并使用它来过滤/映射子项。检查React.Children API。

  return (
<FilterComponents predicate={predicate}>
<Counter key={1} id={1} />
<Counter key={2} id={2} />
<CoolComponent key={3} id={3} />
<BestComponent key={4} id={4} />
</FilterComponents>
);
function FilterComponents({ children, predicate }) {
const filteredChildren = React.Children.toArray(children).filter(child =>
// Use the predicate.
// Filter a child by key, key & type or even use ref etc.
);
return <div>{filteredChildren}</div>;
}
<小时/>

关于reactjs - 单击多个按钮时隐藏所有 div 并显示一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56205855/

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