首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-native:如何在react-native中使用setState()动态?

react-native:如何在react-native中使用setState()动态?
EN

Stack Overflow用户
提问于 2019-05-10 02:36:26
回答 1查看 155关注 0票数 0

我可以像下面这样创建动态状态:

代码语言:javascript
复制
constructor(props) {
    super(props);
    this.state = {};
}

使用此方法创建状态:

代码语言:javascript
复制
func(name){
   this.state[name];
}

并使用以下内容进行setState:

代码语言:javascript
复制
func2(name,value){
   this.setState({[name]:value});
}

所以有了

代码语言:javascript
复制
this.func('color');
this.func('size');

我有this.func.colorthis.func.size。对吗?

它起作用了。

但我想要这样的东西。我想在'names'状态中创建所有新的动态状态。

代码语言:javascript
复制
constructor(props) {
        super(props);
        this.state = {names:[]};
}

names是一种正常状态。

代码语言:javascript
复制
func(name){
       this.state.names[name];
}

func2(name,value){
   this.setState({names:{[name]:value}:});
}

我调用这个函数:

代码语言:javascript
复制
func('color');
func('size');

func2('color','red');
func2('size','larg');

我对console.log(this.state.names)的期望是:

代码语言:javascript
复制
{color:'red',size:'larg'}

但是我只得到了{size:'larg'} (第二个函数)

我哪里错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 02:42:48

当您再次调用this.setState时,将覆盖names的值。

你有效地做到了:

代码语言:javascript
复制
this.setState({ names: { color: 'red' }});
this.setState({ names: { size: 'large' }});

考虑在func2中使用Object.assign(),以确保不会替换要添加属性的对象。

代码语言:javascript
复制
func2(name,value) {
    this.setState({
        names: Object.assign(this.state.names, {[name]: value})
    });
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56065628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档