javascript - 我们可以在react中动态添加状态名称吗

标签 javascript reactjs

从数据库获取对象,然后我将其转换为数组以更改矩形组件的状态,现在我想将数据更新到我在 react 中创建的 View 。

我遵循的方法如下:

var PreviewContainer = React.createClass({
  getInitialState: function() {
    return {
      sourceImg: {
        src0: 'xyz',
        src1: 'xyz',
        src2: 'xyz',
        src3: 'xyz'
      },
      id: '',
      alter: "myalt"
    };
  },
  render: function() {
    Interfaces.previewContainer = this;
    var imgContainer = [];

    for (var i = 0; i < 4; i++) {
      imgContainer.push(React.createElement(PreviewImgContainer, {
        key: i,
        sourceImg: this.state.sourceImg['src' + i],
        alter: this.state.alter
      }));
    }
    return (
      React.createElement('div', {
          className: 'previewContainer'
        },
        imgContainer,
        React.createElement(ColorCardParent))
    );
  }
});

之后我必须使用静态方法按如下方式在容器中设置这些图像

Interfaces.previewContainer.setState({sourceImg: {
    src0: templatearray[0].image_path.slice(1),
    src1: templatearray[1].image_path.slice(1),
    src2: templatearray[2].image_path.slice(1),
    src3: templatearray[3].image_path.slice(1)
  }
});

有没有办法做到这一点,以便我可以动态地执行此操作。

最佳答案

不太清楚您想要实现的目标以及问题是什么,但您可以按如下方式填充您的 sourceImg 对象:

var sourceImg = {};
for (var i=0; i<templatearray.length; i++) {
  var srcKey = "src" + i.toString();
  sourceImg[srcKey] = templatearray[i].image_path.slice(1);   // fill object dynamically
}
Interfaces.previewContainer.setState({ sourceImg : sourceImg });

顺便说一句:动态填充对象与 react 无关。

关于javascript - 我们可以在react中动态添加状态名称吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33627097/

相关文章:

javascript - 必须返回有效组件错误

reactjs - 如何在 npm 构建期间从源代码中删除 @license 注释(将手动添加)?

javascript - 如何通过react-router正确使用嵌套路由?

javascript - 无法使用 R.path 获取输入值

arrays - 映射除最后一个键之外的对象 - Reactjs

javascript - 如何增加雷达 Chartjs 标签的大小和系列

javascript - 你如何在 View 中混合 JS 和 Ruby 代码以供以后使用 JS?

javascript - 目前是否有任何引擎可将 JavaScript 编译为具有图形支持的独立应用程序?

javascript - 从数组中的对象访问单个字段

javascript - 使用带有异步获取变量的 react-apollo 调用 graphql 查询