我知道问题是页面在加载状态之前呈现。我正在使用react-google-maps
并尝试从我的用户位置创建标记。问题是状态是一个空数组,直到从redux加载状态。我该如何处理这个问题。我将在下面发布代码。
关注此问题的函数是generateInitialMarkers()
,并且constructor()
上this.state
的{{1}}方法会将项目传入其中。
markers
答案 0 :(得分:1)
如果预期的道具不存在,那么快速修复就是不要在你的州调用generateInitialMarkers()......
$Inside = $False
$Modified = $False
$Path = "$( $env:ProgramFiles )\prog\file.conf"
$NewLines = Get-Content $Path |
ForEach-Object {
if( $_.Trim() -like "[*]" ) { $Inside = $False }
if( $_.Trim() -like "*[MyAction_Log]*" ) { $Inside = $True }
If( $Inside -and $_ -like "action = *" -and $_ -notlike "*run fast*" ) { $Modified = $True; "action = run fast" } else { $_ }
}
If( $Modified ) { $NewLines | Set-Content $Path }
然后,一旦组件收到所需的browser.items道具,将它们添加到状态
markers: (props.browser.items.length > 0) ?
generateInitialMarkers(props.browser.items) : ""
您可能还需要阻止render()函数/ GeolocationExampleGoogleMap组件调用this.state.markers,直到分配了正确的值。
请记住,这有点骇人听闻。
更理想的解决方案是确保在调用OfferMap组件之前传递所需的道具。
进一步阅读
看一下这个页面,以便更好地理解反应组件的生命周期:
https://facebook.github.io/react/docs/react-component.html
此外,您似乎想要将redux状态映射到组件中的属性。看看这个页面: