- 微信小程序不支持复杂正则表达式,简单的正则表达式也需要用new RegExp()的方法生成。
- taro的input组件,在微信小程序上运行时,onInput限制输入number类型,会无法限制
微信小程序中表单组件不是完全受控的,Input 组件输入后,视图立即变化,但其 value 绑定的值还是旧值,这时你直接 setState 一个旧值会被 Taro 的 diff 过滤掉。
taro-docs.jd.com/taro/docs/d…
解决的办法在于视图改变时,立即同步 data,然后setTimeout再对 data 值进行进一步修改。
let value = e.detail.value
setInputValue(value)
if (type ==='number' && value) {
setTimeout(() => {
value = value.replace(/[^0-9\.-]/g, '')
if (positiveOnly) {
value = value.replace('-', '')
} else {
const lastMinusIndex = value.lastIndexOf('-')
if (lastMinusIndex > 0) {
value = value.slice(0, lastMinusIndex)
}
}
if (decimalScale) {
const pointIndex = value.indexOf('.')
const length = value.length
if (pointIndex > -1 && pointIndex + decimalScale + 1 < length) {
value = value.substring(0 , pointIndex + decimalScale + 1)
}
const pointArr = value.split('.')
if (pointArr.length > 2) {
const lastPointIndex = value.lastIndexOf('.')
value = value.slice(0, lastPointIndex)
}
} else {
value = value.replace('.', '')
}
setInputValue(value)
})
}
- 小程序不支持set-Cookie设置cookie,所以需要手动取出来,设置进缓存,当有多个cookie时,更要注意数据的拼接,因为小程序没有返回一个正确的格式
const cookie = responseHeader['Set-Cookie']
const cookieObj = {
__session_id: '',
__device_id: ''
}
cookie?.split(';')?.forEach((item) => {
const sessionIndex = item.indexOf('__session_id')
if (sessionIndex > -1) cookieObj.__session_id = item.substring(sessionIndex + 12)
const deviceIndex = item.indexOf('__device_id')
if (deviceIndex > -1) cookieObj.__device_id = item.substring(deviceIndex + 11)
})
let reqCookie = ''
for(const key in cookieObj) {
if (cookieObj[key]) reqCookie += key + cookieObj[key] + ';'
}
reqCookie && Taro.setStorageSync('cookie', reqCookie)
- text设置user-select='true'后,-webkit-line-clamp: 3失效
因为 设置user-select后会将该段文字的css改为inline-block。并且不能改为-webkit-box。导致失效。
如果要长按复制,文字不能设置几行省略号,智能动态计算文字长度,手动添加...