-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[微信小程序]Input 组件 onChange 与 onInput 表现不一致 #4532
Comments
欢迎提交 Issue~ 如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏 如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。 Good luck and happy coding~ |
附上面提到的实际业务demo,需要真机调试。使用手机华为荣耀9X,运行系统28,微信版本7.0.6,基础库版本2.8.3 [292]。下面是复现步骤。
import Taro, { Component } from '@tarojs/taro'
import { View, Button, Text } from '@tarojs/components'
import { observer, inject } from '@tarojs/mobx'
import { observable, action } from 'mobx'
import './index.scss'
@inject('counterStore')
@observer
class Index extends Component {
@observable text = ''
@action
onChangeInput = (e) => {
this.text = e.target.value
}
onConfirm = () => {
if (!this.text) {
Taro.showModal({
title: '提示',
content: '获取到的文本是空文本' + this.text,
showCancel: false
})
} else {
Taro.showModal({
title: '提示',
content: '获取到的文本是 ' + this.text,
showCancel: false
})
}
}
render () {
const { text } = this
return (
<View className='index'>
<Input
className="input"
placeholder='请输入文字'
onChange={this.onChangeInput}
// onInput={this.onChangeInput}
/>
<Text className="text">文本:{ text }</Text>
<Button onClick={this.onConfirm}>
<Text>确定</Text>
</Button>
</View>
)
}
}
export default Index
page {
width: 100%;
height: 100%;
font-size: 28rpx;
line-height: 44rpx;
}
.index {
width: 100%;
height: 100%;
.input {
width: 100%;
height: 80rpx;
margin-bottom: 16rpx;
}
.text {
margin-bottom: 16rpx;
}
}
|
用 onInput 。小程序中没有 onChange 事件。 这个 onChange 仅针对 h5 端作为一个补充使用。建议 H5 端和 小程序端都使用 onIput |
建议在官网对应文档上直接去掉onChange或添加相对应说明,以免出现类似误解。 |
Hello~ 您的问题楼上已经有了确切的回答,如果没有更多的问题这个 issue 将在 15 天后被自动关闭。 如果您在这 15 天中更新更多信息自动关闭的流程会自动取消,如有其他问题也可以发起新的 Issue。 Good luck and happy coding~ |
发现h5下ios系统输入法 直接点击联想词输入时 |
我看文档里onChange、onInput写在一起,以为是别名,效果一样,看了这个issue才懂居然不一样。 |
问题描述
微信小程序中,Input 组件
onChange
与onInput
表现不一致。复现步骤
taro init taro-test
,项目介绍任意,不使用 TS,预处理器 Sass,默认模板src/pages/index/index.jsx
src/pages/index/index.scss
npm run dev:weapp
,微信开发者工具打开项目,在输入框内输入内容,输入框失去聚焦时才会出现输入的内容(onChange
事件的表现)src/pages/index/index.jsx
23行,取消注释src/pages/index/index.jsx
24行,保存,在输入框内输入内容,输入内容后马上出现输入的内容(onInput
事件的表现)实际业务(taro + mobx):真机上弹出键盘输入完毕后,没有收起键盘就直接点击按钮触发按钮点击事件,在点击事件中获取 text 然后发送请求。使用
onChange
事件会获取到修改前的 text 导致了一定的问题。该部分的复现步骤已提供,请往下看。期望行为
官方文档把两个事件放在了一起,我认为这意味着
onChange
表现应当与onInput
一致,输入内容后输入的内容马上更新,而无需等到输入框失去聚焦。没有尝试其他端的表现。
报错信息
无报错,但表现不符合预期。
系统信息
The text was updated successfully, but these errors were encountered: