javascript React组件在状态更改时不重新呈现

epggiuax  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(150)

我把一个对象分派到一个数组中,我得到一个信息,它已经成功发送了,但是这个数组的长度在我的Header组件中没有改变。

store.getState().Basket.length

未重新呈现。仅当更改路径时重新呈现该值。
这是标题组件:

function Header() {
  return (
    <div id="Header">
      <Link to='/' style={{ display: 'flex',textDecoration: 'none', color: '#000' }}>
        <div className='Header_Pole'>
          <img src={logo} alt='Logo' className='Header_Pole_img'/>   
        </div>
      </Link>
      <Link to='/basket' style={{ display: 'flex',textDecoration: 'none', color: '#000' }}>
        <div className='Header_Pole'>
          <img src={shoppingBasketIcon} alt='Basket' className='Header_Pole_img'/> 
          <p className='itemsCounter'>{ store.getState().Basket.length }</p>
        </div>
      </Link>
    </div>
  )
}

export default Header;

储存:

export const store = configureStore({
    reducer: {
        Basket: basketReducer
    }
  })

调度功能:

const addToBasket = () => {
    dispatch({
      type: addtoBASKET,
      item: {
      id: Products[idOfProduct - 1].id,
      name:Products[idOfProduct - 1].name,
      type: Products[idOfProduct - 1].type,
      image: Products[idOfProduct - 1].image,
      price:Products[idOfProduct - 1].price,
      size: gettingSize() // return a size
      }
    })
  }

我试着在网上找一些东西,但什么都没有用。

lfapxunr

lfapxunr1#

您应该使用react-redux中的挂接useSelector
当redux状态更改时,useSelector将通知您的组件并更新您的组件

import { useSelector } from 'react-redux'

function Header() {
  const basketLength = useSelector((state)=>state.Basket.length)
  return (
    <div id="Header">
       // [...]
       <p className='itemsCounter'>{basketLength}</p>
    </div>
  )
}

export default Header;
wpx232ag

wpx232ag2#

你必须使用react-redux来处理react中的redux状态,否则你必须手动实现两者之间的状态同步。

相关问题