javascript - 期望一个赋值或函数调用,而是在 React 中看到一个表达式
问题描述
我正在 React 中创建一个计数器,并在 onclick 事件中执行如下操作:
我有以下代码:
import React , {Component} from "react";
import Counter from './counter';
class Counters extends Component{
state = {
counters : [
{id: 1 , value : 10 },
{id: 2 , value : 20 },
{id: 3 , value : 30 },
{id: 4 , value : 40 }
],
}
handleIncrement=(counter)=>{
var counters_temp = [...this.state.counters];
var counters_temp=counters_temp.map((c)=>{
c.id===counter.id?c.value++ : c;
return(c);
});
this.setState({counters : counters_temp});
}
render(){
return(
<div>
{this.state.counters.map((counter)=>
<Counter
onIncrement = {this.handleIncrement}
counter = {counter}
id = {counter.id}
>
</Counter>
)}
</div>
);
}
}
export default Counters;
handleIncrement 函数给出以下错误。“期望一个赋值或函数调用,而是看到一个表达式”。如果我在 javascript 文件中编写一个独立的similarhandleIncrement 代码,它运行良好。此外,如果注释掉: c.id===counter.id?c.value++ : c;
并写:
handleIncrement=(counter)=>{
var counters_temp = [...this.state.counters];
var counters_temp=counters_temp.map((c)=>{
//c.id===counter.id?c.value++ : c;
return(c);
});
this.setState({counters : counters_temp});
}
那么没有编译错误,但它也不能解决我的目的。子组件计数器如下所示:
import React , {Component} from "react";
class Counter extends Component{
render(){
return(
<div>
<span class="badge badge-warning">{"Zero"}</span>
<button onClick = {()=>this.props.onIncrement(this.props.counter)} type="button" class="btn btn-secondary">Increment</button>
</div>
);
}
}
export default Counter;
为什么呢 ?
解决方案
您的 this.state.counters 中没有任何“id”作为属性。我认为你应该使用
c.key === counter.key
同时显示计数器组件。它通过id吗?
推荐阅读
- apache-kafka-streams - 在将 Ktable 实体化为 Topic 之前将其转换为 Streaming 有什么好处?
- docker - 启动 wolkenkit 失败
- sql - 来自 SQL 查询的 Spark 数据框
- javascript - 如果用户已登录,则更改路由名称和组件
- css - 围绕 SVG 的框的纵横比错误
- python - 是否有任何 Python 选项可用于 3D 线性分段/分段回归
- python - 计算矩阵中两行的所有组合的点积
- powershell - 使用 Powershell 如何从 Exchange 移动设备检索“策略应用程序状态”?
- jquery - 使用子行动态构建 HTML 表
- git - 具有永久本地更改的 git pull 的首选策略