仅在满足条件的情况下才在React中渲染某些内容?

时间:2020-02-27 02:25:14

标签: reactjs react-hooks

我有一个应用程序,一次显示一个API中的数据。 我只想在pageNumber的值> 1时才显示后退按钮。努力理解为什么它不允许我编写简单的if语句。

代码如下:

const TopRatedPage = () => {
  const [apiData, setApiData] = useState([]);
  const [isLoading, setLoading] = useState(false);
  const [pageNumber, setPageNumber] = useState(1);
  const { results = [] } = apiData;

  useEffect(() => {
    setLoading(true);
    fetchTopRatedMovies(pageNumber).then((data) => setApiData(data));
    setLoading(false);
  }, [pageNumber]);

  return (
    <div className='top-rated-page-wrapper'>
      <h1>TopRatedPage</h1>
      {isLoading ? <h1>Loading...</h1> : <MovieList results={results} />}
      <button
        onClick={() => {
          setPageNumber(pageNumber + 1);
        }}>
        MORE
      </button>
      <button
        onClick={() => {
          setPageNumber(pageNumber - 1);
        }}>
        BACK
      </button>
    </div>
  );
};

我的目的是使BACK按钮在pageNumber中不可见,除非该值> 1。

2 个答案:

答案 0 :(得分:0)

您只需要限制其pageNumber的显示:

{pageNumber > 1 && <button
  onClick={() => {
    setPageNumber(pageNumber - 1);
  }}>
    BACK
</button>}

答案 1 :(得分:0)

尝试一下

return (
        <div className='top-rated-page-wrapper'>
            <h1>TopRatedPage</h1>
            {isLoading ? <h1>Loading...</h1> : <MovieList results={results} />}
            <button
                onClick={() => {
                setPageNumber(pageNumber + 1);
                }}>
                    MORE
                </button>
            {pageNumber > 1 && (
                <button
                    onClick={() => {
                    setPageNumber(pageNumber - 1);
                }}>
                    BACK
                </button>
            )}
        </div>
    );