ReactJS 通过状态中断更改样式 CSS
ReactJS changing styles via State breaks CSS
所以我一直在学习 React。
并且一直在学习 states/props 和动态改变事物。因此,我将在组件上设置的状态设置为:
constructor(props) {
super(props);
this.modifyStyle = this.modifyStyle.bind(this);
this.state = {
navigation: [
{ route: "/", title: "Home" },
{ route: "/about", title: "About Me" },
{ route: "/portfolio", title: "Portfolio" },
{ route: "/contact", title: "Contact" },
{ route: "/", title: "Services" },
],
styling: "nav",
};
}
注意“样式设置”状态。
这用于指定列表元素样式:
render() {
return (
<div>
<div className="trigram">
<p>☰</p>
</div>
<ul className={this.state.styling}>
{this.state.navigation.map((items) => (
<NavItem route={items.route} title={items.title} />
))}
</ul>
</div>
);
“样式”状态的 css 是这样的:
.nav {
width: 100%;
float: left;
list-style: none;
padding: 15px;
transition: 1s;
}
它在网页上生成以下样式以及相关的 li 样式:
[![菜单截图][1]][1]
想法是使用以下函数在“滚动”事件中将列表样式更改为较小的样式:
componentDidMount() {
document.addEventListener("scroll", this.modifyStyle, true);
}
modifyStyle = () => {
this.setState({
styling: "nav2",
});
};
分配给状态的“nav2”样式应与主菜单样式相同,但填充较低。
.nav2 {
width: 100%;
float: left;
list-style: none;
padding: 5px;
transition: 1s;
}
函数已调用,一切正常。风格改变了。然而由于某种原因,更新后的样式完全中断并且看起来像这样:
[![截图问题][2]][2]
我不知道为什么会这样,似乎再多的调试 CSS 也无法解决问题。
造型不会在这里玩游戏。
我认为这与 React 处理状态的方式有关,但我不太确定。任何帮助将不胜感激。
TIA
[1]: https://i.stack.imgur.com/bK1dt.png
[2]: https://i.stack.imgur.com/w7Wh2.png
不是 React 问题,是 CSS。
问题已通过泛化“li”标签得到解决 css。没有针对特定的 class
指定它
所以我一直在学习 React。
并且一直在学习 states/props 和动态改变事物。因此,我将在组件上设置的状态设置为:
constructor(props) {
super(props);
this.modifyStyle = this.modifyStyle.bind(this);
this.state = {
navigation: [
{ route: "/", title: "Home" },
{ route: "/about", title: "About Me" },
{ route: "/portfolio", title: "Portfolio" },
{ route: "/contact", title: "Contact" },
{ route: "/", title: "Services" },
],
styling: "nav",
};
}
注意“样式设置”状态。
这用于指定列表元素样式:
render() {
return (
<div>
<div className="trigram">
<p>☰</p>
</div>
<ul className={this.state.styling}>
{this.state.navigation.map((items) => (
<NavItem route={items.route} title={items.title} />
))}
</ul>
</div>
);
“样式”状态的 css 是这样的:
.nav {
width: 100%;
float: left;
list-style: none;
padding: 15px;
transition: 1s;
}
它在网页上生成以下样式以及相关的 li 样式:
[![菜单截图][1]][1]
想法是使用以下函数在“滚动”事件中将列表样式更改为较小的样式:
componentDidMount() {
document.addEventListener("scroll", this.modifyStyle, true);
}
modifyStyle = () => {
this.setState({
styling: "nav2",
});
};
分配给状态的“nav2”样式应与主菜单样式相同,但填充较低。
.nav2 {
width: 100%;
float: left;
list-style: none;
padding: 5px;
transition: 1s;
}
函数已调用,一切正常。风格改变了。然而由于某种原因,更新后的样式完全中断并且看起来像这样:
[![截图问题][2]][2]
我不知道为什么会这样,似乎再多的调试 CSS 也无法解决问题。 造型不会在这里玩游戏。
我认为这与 React 处理状态的方式有关,但我不太确定。任何帮助将不胜感激。
TIA [1]: https://i.stack.imgur.com/bK1dt.png [2]: https://i.stack.imgur.com/w7Wh2.png
不是 React 问题,是 CSS。
问题已通过泛化“li”标签得到解决 css。没有针对特定的 class
指定它