在我的JSX文件中,我有这样一个函数.

async isPresent () {
    const res = await AsyncFunction();
    if (res) {
        return true;
    }
    return false;
}

然后在条件渲染中使用它作为

{  this.isPresent() &&  <div> Content </div> }

但这始终是真的.

如何解决此问题?

推荐答案

您可以执行以下操作:

const [isPresentResult, setIsPresentResult] = useState(false);

useEffect(() => {
  this.isPresent().then(res => setIsPresentResult(res))
}, [])

// ...
{ isPresentResult &&  <div> Content </div> }

使用类组件:

class ExampleComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = { isPresentResult: false };
  }

  componentWillMount = () => {
    this.isPresent().then((isPresentResult) => 
      this.setState({ isPresentResult }));
  };

  async isPresent() {
    const res = await AsyncFunction();
    return !!res;
  }

  render() {
    return {this.state.isPresentResult && <div> Content </div>};
  }
}

Javascript相关问答推荐

有没有方法在Angular中的bowser选项卡之间移动HTML?

导入图像与内联包含它们NextJS

v-textfield的规则找不到数据中声明的元素

如何在不使用类型化数组的情况下将32位浮点数按位转换为整值?

为什么有些库公开了执行相同任务的方法,但每个方法都处于同步/同步上下文中?

Mongodb拥有5亿个文档,我想根据JavaScript驱动程序中的两个字段使用regEx进行搜索,而不是模式

一次仅播放一个音频

没有输出到带有chrome.Devtools扩展的控制台

if/else JavaScript中的条件行为

Angular:动画不启动

康威的生活游戏规则在我的Javascript版本中不起作用.''我做错了什么?

单击ImageListItemBar的IconButton后,在Material—UI对话框中显示图像

当点击注册页面上的注册按钮时,邮箱重复

如何在JavaScript文件中使用Json文件

IF语句的计算结果与实际情况相反

JQuery Click事件不适用于动态创建的按钮

查询参数未在我的Next.js应用路由接口中定义

使每个<;li>;元素的 colored颜色 与随机生成的 colored颜色 列表不同(不重复

图表4-堆叠线和条形图之间的填充区域

用Reaction-RT-Chart创建实时条形图