如何在foreach中等待setState完成然后显示渲染?
class App extends Component {
componentDidMount() {
someArrOfObject.forEach(o => {
this.setState({
[`list_for_${o.id}`]: o.val
})
})
}
render() {
const { selected_id } = this.state
const selected_list = this.state[`list_for_${selected_id}`]
return selected_list.map(o => <div>{o.val}</div>)
}
}
答案 0 :(得分:3)
class App extends Component {
componentDidMount() {
let newState = {};
someArrOfObject.forEach(o => {
{
newState[`list_for_${o.id}`] = o.val;
})
})
this.setState(newState);
}
render() {
const { selected_id } = this.state
const selected_list = this.state[`list_for_${selected_id}`]
return selected_list.map(o => <div>{o.val}</div>)
}
}
答案 1 :(得分:0)
如果您的意思是在完成对this.state
的所有更改后希望React呈现,那么您不必执行任何操作。在实际更改this.state
之前,React会等待对state
进行多项更改。然后只调用渲染函数。
如果你想要在调用render()
之前加载所有内容,那么你想要的是componentWillMount()
而不是componentDidMount()
。
希望有所帮助。
答案 2 :(得分:0)
您需要先建立自己的州,然后再拨打AB = B-A;
AC = C-A;
AD = D-A;
% projection of vector X onto vector Y.
proj = @(X,Y) Y * dot(X,Y)/dot(Y,Y);
% get the desired distances
L2 = norm(AC - proj(AC,AB));
L1 = norm(proj(AD,AB));
。
像这样的东西
setState