当我使用setState进行交易时,它会旋转两次。首先返回数据失败,然后返回数据就绪。控制台首先返回false,然后返回true。我只想在控制台中返回true。
config.action_cable.url = "ws://localhost:3000/cable"
答案 0 :(得分:0)
这是由于React的生命周期以及您将state.loading属性最初设置为false的事实。 https://reactjs.org/docs/react-component.html
首先有一个初始渲染,然后调用具有setState的componentDidMount。您可能要保留未定义的加载,然后在render方法中检查其定义是否已定义,然后再检查其值。
答案 1 :(得分:0)
您只需反转与加载相关联的布尔值。您应该首先将其设置为true
,然后在加载数据时设置为false
。
工作示例:
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
loading: true,
error: false,
data: []
};
}
componentDidMount() {
fetch("https://reqres.in/api/users?page=2")
.then(res => res.json())
.then(result => {
this.setState({
data: result.data,
loading: false
});
})
.catch(error =>{
this.setState({ error: true });
});
}
render() {
const { loading, error } = this.state;
!loading && console.log(true)
return <div>{!loading && <div>Data Ready </div>}
{error && <div>Data Error :( </div>}
</div>;
}
}
ReactDOM.render(<App/>, document.getElementById('root'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.1.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.1.1/umd/react-dom.production.min.js"></script>
<div id='root'/>
答案 2 :(得分:0)