javascript - 如果没有加载任何内容,如何不显示任何内容

标签 javascript reactjs

我正在从 Context.Provider 中设置 user_id ,并从数据库中的数据中设置 album_id 。如果这两个变量已设置并且彼此相等,我将添加两个按钮(编辑和删除)并设置加载微调器(如果尚未设置值)。

在这里,我从数据库中获取数据并将其设置为author_id,并从另一个组件中获取Context.Provider以设置为user_id。

this.state = {
      loading: false,
    };

    componentDidMount() {
      const { match: { params} } = this.props;
      console.log('COMPONENT HAS MOUNTED');

      this.setState({ loading : true });
      fetch(`http://localhost:8000/albums/${params.albumId}`)
        .then((response) =>
          response.json())
        .then((data) => {
              this.setState({ albums : data });
            }).then(()=> {
            this.setState({ loading : false });
           }).catch((error) => {
                console.log("Error " + error)
              })
    }

render() {
    const user_id = this.context.user ? this.context.user.sub : null;
    const author_id = this.state.albums[0] ? this.state.albums[0].author : null;
    const shouldRenderButton = user_id && author_id && user_id === author_id;

Album.contextType = Auth0Context;

如果这两个变量都已设置且彼此相等,我将呈现两个按钮(编辑和删除):

<div>
    {shouldRenderButton ?
    <Container>
    <Row xs="2">
    <Col><Button color="primary" size="sm">Edit</Button></Col>
    <Col><Button color="danger" size="sm">Delete</Button></Col>
    </Row>
    </Container> : <Spinner size="sm" color="secondary" />
    }
 </div>

当我等待添加数据时,我有一个微调器。我想要做的是,如果 album_id 不等于 user_id 我想不显示任何内容并停止旋转。正如您所看到的,我首先将加载设置为 false,在获取数据之前设置为 true,在获取数据后设置为 false,但我不确定如何在我的代码中使用它。

最佳答案

好的,根据您的代码,您应该在渲染中执行类似的操作:

if (loading) return <Spinner />
return (
  shouldRenderButton ? <YourJsxFragment /> : null
)

IMO 使用嵌套三元组会使代码不可读,因此我喜欢使用 if 语句返回内容,而不是仅将所有内容包装在一个 return 语句中。

如果您不想显示任何内容,可以返回null

关于javascript - 如果没有加载任何内容,如何不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60626758/

相关文章:

javascript - 为什么不能在循环或嵌套函数内调用 React Hooks?

javascript - React - 将 this.state 作为 prop 传递

javascript - 在 highstock 中设置导航数据

javascript - 当 React 尝试使用 load 注册在 window.onload 或 window.addEventListener 中运行的组件时,DOM 尚未加载

javascript - 生成多个具有不同条件的数组

javascript - 导航菜单事件元素和状态管理问题

javascript - 通过单击 react.js 传递 id

javascript - 如何在元素外捕捉鼠标弹起事件?

javascript - 如果我在 UserControl 外部使用 "FindControl",我在 UserControl 内使用什么?

javascript - 如何使用react-testing-library测试material ui MenuList组件上的按键事件