reactjs - 如何在连接到 redux 存储的组件上使用 ref 回调函数?
问题描述
我正在尝试在我创建的几个 ref 上使用回调函数,然后将操作分派到 redux 存储。我遇到的问题是,当我尝试使用回调时,我收到一条错误消息,指出我试图在回调中调用的函数不是函数。我认为这是因为当我将子组件传递给 connect()() 时,它会失去它的原始绑定。我的问题有解决方案吗?
//callback
sumbitQuiz = () => {
this.state.words.forEach((word) => {
return this[word].current.compairWordAndHeldWord()
})
}
//Function in child ref I'm trying to call
compairWordAndHeldWord = () => {
if( this.state.word === this.state.inputWord) {
this.setState(() => ({
wordAndInputWordMatch: true
}))
this.props.dispatch(addCorrectAnswer())
} else {
this.setState(() => ({
wordAndInputWordMatch: false
}))
}
}
解决方案
我认为这样做的一种方法是我修改你addCorrectAnswer
的以便从中返回一个承诺,然后(ehehe)你可以通过以下方式处理流程:
compairWordAndHeldWord = () => {
if( this.state.word === this.state.inputWord) {
this.setState(() => ({
wordAndInputWordMatch: true
}))
this.props.dispatch(addCorrectAnswer())
.then(()=>{
//put here your callback logic
}
.catch(()=>{})
} else {
this.setState(() => ({
wordAndInputWordMatch: false
}))
}
}
推荐阅读
- python - 系统应该返回一个正数,但 python 总是将 Y 作为负数返回,而它不应该返回
- javascript - FullCalendar - 我可以实现这个视图(见图片)
- postgresql - Postgres SQL 中的加密和解密
- .net-core - 每个环境的 .net core 3.0 appsettings.json
- ssis - 将大约 600 个表中的数据从一个数据库移动到另一个数据库
- oracle - 如何在嵌套表中使用 PL/SQL 记录数据类型?
- twilio - 我可以在收到新电子邮件时生成 Twilio SMS(电子邮件 -> SMS)吗?
- c - 为什么这个 #define STMT ( 0 || g() ) 会产生编译器错误 [-Werror=unused-value]?
- python - 短路和浮动
- php - 来自 url 的 Laravel 访问 id