[英]Styled Component does not update the <div> after a re-render
I have a react component which renders based on a switch statement.我有一个基于 switch 语句呈现的反应组件。 I am updating the state in which the switch is based out of and it does not
我正在更新开关基于的 state,但它没有
switch (condition) {
case Condition1:
default:
return (
<Condition1Component />
);
case Condition2:
return (
<Condition2Component />
);
case Condition3:
return (
<Condition3Component />
);
}
All three components are being wrapped in its own styled div
.所有三个组件都被包装在自己的样式中
div
。
When I go from default state to Condition3
, The Condition3
component is being wrapped around the Condition1 styled div
which is strange.当我 go 从默认 state 到
Condition3
时, Condition3
组件被包裹在Condition1 styled div
周围,这很奇怪。
When I change my default state to Condition3
then everything works as supposed to.当我将我的默认 state 更改为
Condition3
时,一切都按预期工作。
See if this works for you.看看这是否适合你。
const Container1_DIV = window.styled.div` color: red; `; const Container2_DIV = window.styled.div` color: blue; `; const Container3_DIV = window.styled.div` color: green; `; const Default_DIV = window.styled.div` color: black; `; function App() { const [myState,setMyState] = React.useState(1); switch(myState) { case 1: return ( <React.Fragment> <Container1_DIV>I am Container 1</Container1_DIV> <button onClick={()=>setMyState(1)}>Select 1</button> <button onClick={()=>setMyState(2)}>Select 2</button> <button onClick={()=>setMyState(3)}>Select 3</button> <button onClick={()=>setMyState(4)}>Select 4</button> </React.Fragment> ); case 2: return ( <React.Fragment> <Container2_DIV>I am Container 2</Container2_DIV> <button onClick={()=>setMyState(1)}>Select 1</button> <button onClick={()=>setMyState(2)}>Select 2</button> <button onClick={()=>setMyState(3)}>Select 3</button> <button onClick={()=>setMyState(4)}>Select 4</button> </React.Fragment> ); case 3: return ( <React.Fragment> <Container3_DIV>I am Container 3</Container3_DIV> <button onClick={()=>setMyState(1)}>Select 1</button> <button onClick={()=>setMyState(2)}>Select 2</button> <button onClick={()=>setMyState(3)}>Select 3</button> <button onClick={()=>setMyState(4)}>Select 4</button> </React.Fragment> ); default: return ( <React.Fragment> <Default_DIV>I am Default DIV</Default_DIV> <button onClick={()=>setMyState(1)}>Select 1</button> <button onClick={()=>setMyState(2)}>Select 2</button> <button onClick={()=>setMyState(3)}>Select 3</button> <button onClick={()=>setMyState(4)}>Select 4</button> </React.Fragment> ); } } ReactDOM.render(<App/>, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js"></script> <script src="//unpkg.com/styled-components/dist/styled-components.min.js"></script> <div id="root"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.