3 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以改為以布爾值為條件,嘗試將當(dāng)前卡密鑰與已檢查的卡密鑰進(jìn)行比較
<FontAwesomeIcon icon={this.props.checkedCard == this.props.key ? faCoffee : faCheckSquare} />
并在您的容器中:
handleEnroll = slug => {
this.props.dispatch(Enroll(slug));
this.setState({checked: this.props.key});
}
和 :
<CourseCard
key={video.slug}
video={video}
checkedCard={this.state.checkedCard}

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
由于您正在檢查Grid
組件當(dāng)前用戶是否已注冊(cè)(通過(guò)查看該video.enrolled_students
數(shù)組是否包含當(dāng)前用戶),那么這些enrolled
和unrolled
標(biāo)志似乎不再需要了。
因此,Grid
您應(yīng)該能夠?qū)⒌谝粋€(gè)<FontAwesomeIcon />
調(diào)用更改為:
<FontAwesomeIcon icon='faCheckSquare' />
第二個(gè)到
<FontAwesomeIcon icon='faCoffee' />
此外,您在 AllCourses 中有一個(gè)拼寫(xiě)錯(cuò)誤,您this.props.dispatch(Enroll(slug));
在這兩個(gè)課程中都調(diào)用了它handleEnroll
,handleUnroll
并且它最有可能Unroll(slug)
在第二個(gè)中調(diào)用。

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
這是因?yàn)?handleEnroll 和 handleUnroll 設(shè)置了所有課程共享的狀態(tài)。根據(jù)您的描述,聽(tīng)起來(lái)您希望狀態(tài)實(shí)際上是每門(mén)課程。
所以你應(yīng)該AllCourses稍微改變一下
handleEnroll = slug => {
// This should cause some change to the relevant course in allCourses
this.props.dispatch(Enroll(slug));
}
handleUnroll = slug => {
// This should cause some change to the relevant course in allCourses
this.props.dispatch(Enroll(slug));
}
// Delete this
this.state = {
enrolled: true,
unrolled: true
};
然后更改 CourseCard 映射以使用來(lái)自video而非現(xiàn)已淘汰的 AllCourses 狀態(tài)的屬性。
{allCourses.map(video => (
<CourseCard
key={video.slug}
video={video}
enrolled={video.enrolled}
unrolled={video.unrolled}
handleEnroll={this.handleEnroll}
handleUnroll={this.handleUnroll}
normaluser={normaluser}
adminuser={adminuser}
userauthenticated={userauthenticated}
adminauthenticated={adminauthenticated}
/>
))}
添加回答
舉報(bào)