Comments (8)
是小程序场景下 onChange 不能响应,但如果使用 addEventListener 添加事件是可以响应的
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.myRef = React.createRef();
}
componentDidMount() {
this.myRef.current.addEventListener('change', onChange)
}
render() {
return <label>
<input
ref={this.myRef}
type="checkbox"
onChange={onChange}
/>
这是 checkbox 组件 addEventListener
</label>;
}
}
from kbone.
尝试修改一下 miniprogram-render/event/event-target.js
178行就可以响应了,但是这种办法太挫了,暂时没有深入 react 事件机制去看
$_getHandlers(eventName, isCapture, isInit) {
const handlerMap = this.$_eventHandlerMap
if (isInit) {
const handlerObj = handlerMap[eventName] = handlerMap[eventName] || {}
handlerObj.capture = handlerObj.capture || []
handlerObj.bubble = handlerObj.bubble || []
return isCapture ? handlerObj.capture : handlerObj.bubble
} else {
let handlers = []
const handlerObj = handlerMap[eventName]
if (handlerObj) {
handlers = handlers.concat(isCapture ? handlerObj.capture : handlerObj.bubble)
}
for (let key in this) {
if (this.hasOwnProperty(key) && /^__reactEventHandlers/.test(key)) {
const reactEventHandlers = this[key]
Object.keys(reactEventHandlers).map(reactEventName => {
if (reactEventName.toLowerCase() === `on${eventName}`) {
const targetMethod = reactEventHandlers[reactEventName]
if (typeof targetMethod === 'function') {
handlers.push(targetMethod)
}
}
})
}
}
return handlers
}
}
from kbone.
<input
type="checkbox"
value="aaa"
onClick={onClick}
/>
这是 checkbox 组件
</label>
function onClick(evt){
console.log('onClick', evt.currentTarget.checked)
}
直接绑定 onclick
from kbone.
看面看怎么兼容下 onchange, preact 不会出现这个问题
from kbone.
试试 jsx-native-events
/** @jsx nativeEvents */
import nativeEvents from 'jsx-native-events'
import { useState } from 'react'
import 'omim/icon-button'
export default function SomeComponent(props) {
const [result, setSwitch] = useState(false)
return (
<div>
<p>The switch is {result ? 'on' : 'off'}</p>
<m-icon-button color="red" icons="['favorite', 'favorite_border']" onEventChange={e => setSwitch(e.detail.isOn)}>
</m-icon-button>
</div>
)
}
from kbone.
使用 jsx-native-events 在 jsx 绑定 onChange事件,是可以响应的
from kbone.
使用 jsx-native-events 在 jsx 绑定 onChange事件,是可以响应的
虽然这个库可以解决个性化事件问题,
但是有个问题,就是react组件库原来是用 onChange,无法修改组件库的代码,这个暂时没想到怎么解决
-- by easonruan
from kbone.
已在 [email protected] 和 [email protected] 兼容修复
同时也补充了 demo:https://github.com/wechat-miniprogram/kbone/tree/develop/examples/demo16
from kbone.
Related Issues (20)
- 自定义app.js中 onShow中拿到的参数没有实时更新? HOT 2
- 使用moveToLocation方法问题 HOT 5
- build mp - 小程序开发工具预览失败 HOT 1
- ios真机调试报错 selector = selector.replace(regexp, onProcess) HOT 1
- npm run build,h5空白 HOT 1
- vue-cli-plugin-kbone 是不是不支持webpack5项目 HOT 2
- kbone页面节点1000左右的时候,小程序就会变卡顿吗,即使没有在setData,滑动都感觉不流畅 HOT 11
- wx-input 组件 触发input 事件的时候,没监听事件返回值,以及不会同步外部value的值。 HOT 2
- 【讨论】新的小程序组件框架 glass-easel HOT 1
- wx-button open-type="agreePrivacyAuthorization" 回调无法触发 HOT 4
- -
- 是否可以支持 Construct 3 引擎? HOT 3
- createIntersectionObserver().relativeToViewport().observe() 问题 HOT 9
- npm install的时候报错,依赖冲突了 HOT 1
- 'rimraf' 不是内部或外部命令,也不是可运行的程序 HOT 1
- kbone递归方案 HOT 1
- 使用window.$$createIntersectionObserver()页面报错异常错误
- 组件属性对齐:input 组件 auto-focus 即将弃用,需要使用 focus 替代 HOT 1
- img xhr 列表下的img的src在init的时候会把所有的图片都通过xhrget一遍,在图片列表较大的时候很影响 HOT 10
- 请问在vue3项目中使用kbone-ui的mp-navigation-bar组件时,如何绑定bindback事件? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kbone.