将值从地图传递到州

时间:2018-09-03 16:39:21

标签: javascript reactjs

//它现在正在工作-更新代码

我正在使用自己的自动完成组件,因为我无法将Firebase数据传递给现成的组件。

整个机制运行良好,但是在获得用户输入后传递值存在问题

我正在使用这些值设置初始状态

- hosts: localhost
  gather_facts: no
  vars:
    string: ""
    app_kafka_topic:
      cleanup.policy      :
      - "delete"
      retention_ms        :
      - "146800000"
      partitions          :
      - "6"
      replication_factor  :
      - "2"
  tasks:
    - set_fact:
        string: "{{ string }}{{ (index > 0)|ternary(',','') }}{{ item.key }}={{ item.value[0] }}"
      loop: "{{  app_kafka_topic|dict2items }}"
      loop_control:
        index_var: index
    - debug:
        var: string

然后在自动完成类中,我正在从数据库中加载所有用户

"string": "retention_ms=146800000,cleanup.policy=delete,replication_factor=2,partitions=6"

这是我的getSuggestions函数。输入更改时触发

const INITIAL_STATE = {
 allChars: [],
 suggestions: [],
 value: ""
};

在渲染中,我只放了{sugestions}
但是在{suggestions}中,我只得到一个名字。 one
但是当我console.log它-我有两个名字 two
应该有两个。

我试图像在loadData()中那样在此函数中设置状态,但是我仍然只得到一个值。
还有其他方法可以将两个值都放入DOM

完整代码可在此处找到:https://github.com/Ilierette/react-planner/blob/master/src/component/elements/Autocomplete.js

1 个答案:

答案 0 :(得分:1)

我认为您每次重新渲染组件时只会看到一个元素的原因是,在allChars数组的map函数中,当您要更新状态下的建议时,您只是在设置每次将其命名为新数组时,都应更新状态下的现有数组,因此代码应为:

this.setState({
    suggestions: [...this.state.suggestions, allChars.name]
})