如何在调用render之前加载状态?

时间:2017-08-09 16:52:09

标签: reactjs redux react-redux

我知道问题是页面在加载状态之前呈现。我正在使用react-google-maps并尝试从我的用户位置创建标记。问题是状态是一个空数组,直到从redux加载状态。我该如何处理这个问题。我将在下面发布代码。

关注此问题的函数是generateInitialMarkers(),并且constructor()this.state的{​​{1}}方法会将项目传入其中。

markers

1 个答案:

答案 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状态映射到组件中的属性。看看这个页面:

http://redux.js.org/docs/basics/UsageWithReact.html