//它现在正在工作-更新代码
我正在使用自己的自动完成组件,因为我无法将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
答案 0 :(得分:1)
我认为您每次重新渲染组件时只会看到一个元素的原因是,在allChars
数组的map函数中,当您要更新状态下的建议时,您只是在设置每次将其命名为新数组时,都应更新状态下的现有数组,因此代码应为:
this.setState({
suggestions: [...this.state.suggestions, allChars.name]
})