首页 > 解决方案 > setState 并重新渲染?

问题描述


function Posts({ setActivePostId }) {
  const [posts, setPosts] = React.useState([])
  const [error, setError] = React.useState()
  const [status, setStatus] = React.useState('loading')

  const fetchPosts = async () => {
    try {
      console.log('Fetching Posts')
      setStatus('foo')
      const posts = await axios.get('/api/posts').then((res) => res.data)
      setPosts(posts)
      setError()
      setStatus('success')
    } catch (err) {
      setError(err)
      setStatus('error')
    }
  }

  React.useEffect(() => {
    console.log('Component Mounted')
    fetchPosts()
  }, [])

正在记录的是

Component Mounted!
Fetching Post

组件是否不应该重新渲染,因为状态的先前或初始状态是loadingsetStatus foo?可能进入无限循环?

标签: reactjs

解决方案


推荐阅读