【发布时间】:2018-01-23 06:34:38
【问题描述】:
这是我在 StackOverflow 上的第一个问题,请耐心等待。
我几天前开始学习 ReactJS,但仍有一些事情不是很清楚。
如何用 ReactJS 替换 jQuery 事件处理程序?
我正在处理这个小选择菜单,但我使用 jQuery 制作它,现在我想将它用作 ReactJS 组件并尝试管理
$('.select').click(function(e) {
e.preventDefault();
e.stopPropagation();
$(this).toggleClass('expanded');
$('#'+$(e.target).attr('for')).prop('checked',true);
});
$(document).click(function() {
$('.select').removeClass('expanded');
});
请在此处查看完整代码:https://codepen.io/Wael-Alsabbouh/pen/GvWvzv
这是我在 ReactJS 中所做的,但仍然无法正常工作!
import React from 'react';
export default class select extends React.Component {
/**
* Show and hide select options
*/
constructor(props) {
super(props);
this.state = { addClass: false, value: '', isToggleOn: true };
this.handleClick = this.handleClick.bind(this);
this.handleChange = this.handleChange.bind(this);
}
handleClick() {
this.setState(prevState => ({
isToggleOn: !prevState.isToggleOn,
addClass: !this.state.addClass,
}));
}
handleChange(e) {
this.setState({
value: e.target.value,
});
e.preventDefault();
}
/**
* React render
*/
render() {
const classNames = ['select'];
if (this.state.addClass) {
classNames.push('expanded');
}
return (
<div className={classNames.join(' ')} >
<input type="radio" name="sortType" value={this.handleChange} checked="checked" id="selected-item" onClick={this.handleClick} /><label htmlFor="selected-item">Item 00</label >
<input type="radio" name="sortType" value={this.handleChange.value} onChange={this.handleChange} /><label htmlFor="Item01">Item 01</label>
<input type="radio" name="sortType" value={this.handleChange.value} onChange={this.handleChange} /><label htmlFor="Item02">Item 02</label>
<input type="radio" name="sortType" value={this.handleChange.value} onChange={this.handleChange} /><label htmlFor="Item03">Item 03</label>
<input type="radio" name="sortType" value={this.handleChange.value} onChange={this.handleChange} /><label htmlFor="Item04">Item 04</label>
<input type="radio" name="sortType" value={this.handleChange.value} onChange={this.handleChange} /><label htmlFor="Item05">Item 05</label>
</div>
);
}
}
提前谢谢你。
【问题讨论】:
-
您只需在
div中添加onChange处理程序并将它们从各个单选按钮中删除。然后,您应该将value属性传递给各个值,您应该没问题 -
@dda 我试过了,但没有任何改变!请检查两个代码,jQuery:codepen.io/Wael-Alsabbouh/pen/GvWvzv React:codepen.io/Wael-Alsabbouh/pen/prdvRJ 谢谢!
标签: javascript jquery reactjs