reactjs - 如何在 React 中使用计算属性名称来设置状态
问题描述
我如何使用计算属性名称来获取状态?
我的意思是,一个代码说超过 1000 个单词:
import React, { Component } from 'react';
import { Link } from 'react-router-dom';
export default class Home extends Component {
state = {
name: 'joao',
age: 18
}
set = (s, v) => {
this.setState({
[s]: v
})
}
get = (s) => {
// ---------- <HERE> ----------
//return this.state.[s];
// ---------- </HERE> ----------
// ---------- <INSTEAD OF> ----------
if(s == 'name') return this.state.name;
else if(s == 'age') return this.state.age;
// ---------- </INSTEAD OF> ----------
}
render() {
return(
<div>
<h1>Home</h1>
<button onClick={() => this.set('name', 'maria')}>Change Name</button>
<button onClick={() => this.set('age', 20)}>Change Age</button>
<br/>{this.get('name')}
<br/>{this.get('age')}
<br/><Link to="/news">Go to NEWS</Link>
</div>
);
};
}
该集合正在工作,但是获取,我无法仅使用 [] 获取状态值 此代码只是一个示例
解决方案
由于 this.state 是一个对象,因此您可以使用多种语法来访问对象的属性,例如:
objectName.property // 人物年龄
objectName["property"] // 人["age"]
objectName[表达式] // x = "年龄"; 人[x]
你的解决方案是:
get = (s) => {
return this.state[s];
}
or just on JSX
<br/>{this.state.name}
<br/>{this.state.age}
推荐阅读
- angular - 如何在 Angular 4 模块中导出简单的 TypeScript 类?
- javascript - 自定义迭代器不适用于数组对象
- javascript - 在 redux 中处理异步操作错误的最佳实践是什么?
- ros - ROS kinetic arch linux安装
- ruby-on-rails - 如何将我的模型关联到逃生室管理轨道应用程序?
- mysql - 分组/组合行并保存不为空的数据
- c# - 由于 Windows IoT 后台任务,C# 中缺少括号?
- react-native - React-Native、Redux 和 Thunk:异步函数执行两次但不填充状态
- html - Chrome 未读取 manifest.json 文件
- php - 如何将数组转换为 php 语句?