Javascript 物料UI分级组件未显示正确的值

Javascript 物料UI分级组件未显示正确的值,javascript,reactjs,material-ui,Javascript,Reactjs,Material Ui,我试图呈现一个接收异步数据的组件循环。它当前工作正常,渲染正常,但渲染的第一个组件除外,其中评级组件未正确显示其值(它仅显示0颗星) 代码如下 <Grid container item direction="column" alignContent="center" className={reviewOpe

我试图呈现一个接收异步数据的组件循环。它当前工作正常,渲染正常,但渲染的第一个组件除外,其中评级组件未正确显示其值(它仅显示0颗星)

代码如下

        <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,以查看这是否改变了什么。但它现在起作用了!谢谢:)