Javascript 物料UI分级组件未显示正确的值
我试图呈现一个接收异步数据的组件循环。它当前工作正常,渲染正常,但渲染的第一个组件除外,其中评级组件未正确显示其值(它仅显示0颗星) 代码如下Javascript 物料UI分级组件未显示正确的值,javascript,reactjs,material-ui,Javascript,Reactjs,Material Ui,我试图呈现一个接收异步数据的组件循环。它当前工作正常,渲染正常,但渲染的第一个组件除外,其中评级组件未正确显示其值(它仅显示0颗星) 代码如下 <Grid container item direction="column" alignContent="center" className={reviewOpe
<Grid
container
item
direction="column"
alignContent="center"
className={reviewOpen ? '' : classes.closedReviewFormCardBlock}
>
{reviews && reviews.map((review) => (
<ReviewCard review={review} userId={localStorage.getItem('userId')}/>
))}
</Grid>
{reviews&&reviews.map((review)=>(
))}
这里的reviews是异步数据,它是一个包含有关review的信息的对象数组
const ReviewCard = ({review, userId}) => {
...
return (
...
<Grid item>
<Rating defaultValue={review.rating} readOnly />
</Grid>
...
)
}
const ReviewCard=({review,userId})=>{
...
返回(
...
...
)
}
围绕评级,我有其他组件使用相同的审查对象作为道具传递,这也使完美的罚款。另外,当我控制台log review.rating时,它包含正确的评级,但我真的不知道为什么它不能正确显示。您想使用
控制的组件,但您没有使用。将其设置为value
,而不是defaultValue
我敢打赌,就是这样,在获取评级之前第一次渲染组件,将其默认值设置为0或类似的值。然后再次渲染,但由于使用了带有defaultValue
的uncontrolled
组件,因此道具更改时不会更新。如果您只是使用value
而不是defaultValue
,我想一切都会解决
当您指定defaultValue
-这意味着您正在使用所谓的非受控组件时-初始值将被设置(因此defaultValue
),但后续更新(即使是defaultValue
)将不起任何作用
如果某个地方的状态更改有可能会更新该值,那么您需要一个受控的组件-使用值而不是默认值
奇怪的是,我最初将其设置为值,但它不起作用。这就是为什么我将其设置为defaultValue,以查看这是否改变了什么。但它现在起作用了!谢谢:)