我还是React的新手。我试图在我的类组件下的另一个方法中定义的条件下渲染一个jsx,如下所示:
isWinner = () => {
let userVotesCount1 = this.state.user1.userVotesCount;
let userVotesCount2 = this.state.user2.userVotesCount;
if (userVotesCount1 > userVotesCount2) {
userVotesCount1++;
this.setState({ user1: { userVotesCount: userVotesCount1 } });
return (
<h3>Winner</h3>
);
}
userVotesCount2++;
this.setState({ user2: { userVotesCount: userVotesCount2 } });
return (
<h3>Loser</h3>
);}
并且我在渲染方法中调用此方法
<Dialog
open={open}
onRequestClose={this.onClose}
>
<div>
<isWinner />
</div>
</Dialog>
已经尝试对<isWinner />
使用替换{() => this.isWinner()}
,但我从未获得该方法的返回。我做错了什么?由于我在这里处理状态,我不知道如何使用外部函数执行此操作。由于某种原因,这个功能永远不会被调用。请帮忙!
答案 0 :(得分:1)
你快到了。你想要做的是使用该方法设置一个标志,然后使用render方法中的标志来有条件地渲染。
constructor(props) {
...
this.state = {
isWinner: false,
...
}
}
isWinner() {
...,
const isWinner = __predicate__ ? true : false;
this.setState({
isWinner: isWinner
});
}
render() {
const { isWinner } = this.state;
return isWinner ? (
// jsx to return for winners
) : (
// jsx to return for lossers
)
}