墨色風雨
2021-06-15 17:01:35
我是 React 的新手,我正在嘗試在無狀態子組件中執行條件渲染。當我更新我的狀態以強制改變條件時,什么也沒有發生。我已經檢查以確保我的回調函數實際上正在改變它的狀態。我已經確保道具正常工作,因為我能夠通過道具從孩子那里檢索其他數據。//main app componentthis.state={FileViewable: false} changeViewStatetoTrue = () =>{ this.setState({FileViewable:!this.state.FileViewable}, function (){ console.log(this.state.FileViewable) });//there are more routes but I just wanted to include the route in question <Switch> <Route path="/app" render={props=><Body {...props} changeViewStatetoTrue={this.changeViewStatetoTrue} fileviewableState={this.FileViewable}/>}/> </Switch>//Body component where the conditional rendering should happen, there is a Tesseract OCR API call being made here, i've left it out because it works fine render(props) { var documentView; if(!this.props.fileviewableState){ documentView = <div> view number 1 </div> } else { documentView = <div> <h1>view number 2 </h1> </div> }我沒有看到任何錯誤消息和狀態正在更改的控制臺日志。我不知道為什么會這樣?
2 回答
料青山看我應如是
TA貢獻1772條經驗 獲得超8個贊
可能的錯誤在這里:
<Switch>
<Route path="/app" render={props=><Body {...props} changeViewStatetoTrue={this.changeViewStatetoTrue} fileviewableState={this.FileViewable}/>}/>
</Switch>
應該:
<Switch>
<Route path="/app" render={props=><Body {...props} changeViewStatetoTrue={this.changeViewStatetoTrue} fileviewableState={this.state.FileViewable}/>}/>
</Switch>
(fileviewableState={this.FileViewable}應該是fileviewableState={this.state.FileViewable}
添加回答
舉報
0/150
提交
取消
