Reactjs 使用来自中继的数据填充自动完成失败

Reactjs 使用来自中继的数据填充自动完成失败,reactjs,relayjs,Reactjs,Relayjs,我正在尝试用来自中继的数据填充自动完成组件。正如您在下面的代码中所看到的,这看起来非常简单。当请求获取时,我使用搜索词调用setVariables。现在,我在输入中键入f时观察到的行为,它发出网络请求并返回正确的数据。但是,(受控)输入清除其值(this.state.value的自动完成组件是'),并且自动完成没有填充建议。记录readyState显示以下输出 现在在输入中再次输入f,它从中继缓存中获取数据并正确填充自动完成。输入第二个字母会再次清除输入,只有输入两个相同的字母,才会获得数据并

我正在尝试用来自中继的数据填充自动完成组件。正如您在下面的代码中所看到的,这看起来非常简单。当请求获取时,我使用搜索词调用
setVariables
。现在,我在输入中键入
f
时观察到的行为,它发出网络请求并返回正确的数据。但是,(受控)输入清除其值(
this.state.value
的自动完成组件是
'
),并且自动完成没有填充建议。记录
readyState
显示以下输出

现在在输入中再次输入
f
,它从中继缓存中获取数据并正确填充自动完成。输入第二个字母会再次清除输入,只有输入两个相同的字母,才会获得数据并填充列表

import React,{Component}来自“React”
从“反应继电器”导入继电器
从“反应自动建议”导入自动建议
const renderSuggestion=(suggestion)=>{suggestion.node.fullName}
const getSuggestionValue=(建议)=>suggestion.node.rowId
类自动完成扩展组件{
状态={
值:“”,
}
onChange=(事件,{newValue})=>{
this.setState({value:newValue})
}
onSuggestionSelected=(事件、选择)=>{
console.log(选择)
this.props.onChange(selection.suggestion)
}
OnSuggestionFetchRequested=({value})=>{
console.log('请求获取')
this.props.relay.setVariables({
查询:值,
是的,
},(州)=>{
console.log(状态)
})
}
OnSuggestionClearRequested=()=>{
this.props.relay.setVariables({
查询:null,
hasQuery:false,
})
}
render(){
const{artists}=this.props.viewer
常量输入属性={
onChange:this.onChange,
占位符:“…”,
value:this.state.value,
}
返回(
)
}
}
导出默认中继.createContainer(自动完成{
初始变量:{
查询:null,
hasQuery:false,
},
片段:{
查看器:()=>Relay.QL`
查看器上的片段{
艺术家:搜索艺术家(
第一:10,,
搜索:$query
)@include(如果:$haskquery){
边缘{
节点{
身份证件
罗维德
全名
}
}
}
}
`
}
})
我怎样才能解决这个问题。这是预期的行为,还是我这边的错误或继电器的错误

编辑:看起来——尽管我不确定——我得到的行为是由于嵌套中继容器造成的。像这样
Relay(Profile)->Form->Relay(AutoComplete)

编辑2:由于
中继(配置文件)
重新渲染,输入将丢失其值。对于
继电器(配置文件)
执行
shouldComponentUpdate
返回
false
,将导致预期的行为。然而,我猜这不是实现它的正确方法

events: [
  { type: "NETWORK_QUERY_START" },
  { type: "CACHE_RESTORE_START" },
  { type: "CACHE_RESTORE_FAILED" },
  { type: "ABORT" }
]