reactjs - 为什么这个 React Switch Case 不起作用?
问题描述
首先,我很抱歉问了这么一个基本的问题,但是我刚开始从它的官方文档中学习 React。
我的应用程序的初始状态
我想在单击“继续”按钮时更新 topicTitle、topicContent 和级别的状态。它应该通过调用函数NextTopic
并在其中递增let level
来实现。然后设置this.state.level
为递增变量的值level
。之后,switch case 应该检查 的值,this.state.level
如果它等于 1,则更新 topicName 和 topicContent 的状态。
这是我的代码运行时实际发生的情况
import React, { Component } from 'react';
export default class Sidebar extends Component {
//default states
constructor() {
super();
this.state = {
level: 0,
topicTitle: 'Topic Name',
topicContent: 'Content!!'
}
}
render() {
const NextTopic = (e) => {
//increment level
let level;
level++;
//set state of level to incremented let level
this.setState({level: level});
//check level of state and update topic name- and content state
switch(this.state.level) {
case 1:
return this.setState({topicTitle: 'new Topic Name', topicContent: 'new Content!!'});
}
}
//Sidebar Component
return (
<div>
<h1>{this.state.topicTitle}</h1>
<p>{this.state.topicContent}</p>
<h2>Level: {this.state.level}</h2>
<button id='next' onClick={NextTopic}>Continue</button>
</div>
)
}
};
解决方案
您尚未level
在NextTopic
. level
您可以直接在 1 中递增setState
:
this.setState((prevState, props) => ({
level: prevState.level + 1
}));
推荐阅读
- angular - change attribute of html element from angular component
- django - 使用 django 上传 base64 视频文件
- php - Symfony - security.yml 中的参数化 ips
- javascript - 如何在每行前面生成序列号以及如何保存多行数据
- python - 如何有效地删除仅包含 0 作为值的前导行?
- angular - 通过函数进行角度动态属性绑定
- javascript - 我可以将 web worker 用于 ui 组件吗?
- jenkins - Jenkins 似乎停止在 Ubuntu 16.04.4 上监听端口 8080
- javascript - FullCalendar 点击时自动填充事件
- c - 这是打开 .txt 文件的正确方法吗