Reactjs 在MouseCenter上更改选定元素-反应
在OnMouseCenter事件中更改所选元素时遇到问题。我有两个相同的元素,我想改变我移动鼠标的当前元素的样式Reactjs 在MouseCenter上更改选定元素-反应,reactjs,mouseevent,Reactjs,Mouseevent,在OnMouseCenter事件中更改所选元素时遇到问题。我有两个相同的元素,我想改变我移动鼠标的当前元素的样式 class Form extends React.Component{ constructor(props){ super(props); this.mouseEnter = this.mouseEnter.bind(this); this.state = { visibility: 'hidden',
class Form extends React.Component{
constructor(props){
super(props);
this.mouseEnter = this.mouseEnter.bind(this);
this.state = {
visibility: 'hidden',
}
}
mouseEnter(e){
if(e.currentTarget.dataset.id) {
this.setState({
visibility: 'visible',
})
}
};
render() {
return <div className="form">
<div className="head_form">
<div className="head_icon"></div>
</div>
<form>
<p className="inputs">EMAIL ADDRESS</p>
<div className="required" style={this.state}>required</div>
<div className="inputs_container">
<input type="email" placeholder="Enter your email address"/>
<div className="triangle" data-id="1" onMouseEnter={this.mouseEnter}></div>
</div>
<p className="inputs">PASSWORD</p>
<div className="required">required</div>
<div className="inputs_container">
<input type="password" placeholder="Enter your password"/>
<div className="triangle" data-id="2" onMouseEnter={this.mouseEnter}></div>
</div>
类表单扩展了React.Component{
建造师(道具){
超级(道具);
this.mouseEnter=this.mouseEnter.bind(this);
此.state={
可见性:“隐藏”,
}
}
穆塞纳(e){
if(例如,currentTarget.dataset.id){
这是我的国家({
可见性:“可见”,
})
}
};
render(){
返回
电子邮件地址
必修的
密码
必修的
您可以将每个元素的类名设置为状态,然后通过更改每个元素的状态来更新类名
在我的示例中,我还为每个元素指定了一个名称,并在mouseEnter和mouseLeave函数中指定了它们的名称
例如:
class Form extends React.Component{
constructor(props){
super(props);
this.mouseEnter = this.mouseEnter.bind(this);
this.mouseLeave = this.mouseLeave.bind(this);
this.state = {
emailInput: 'triangle',
passwordInput: 'triangle'
}
}
mouseEnter(e){
this.setState({
[e.target.name]: 'circle',
})
};
mouseLeave(e){
this.setState({
[e.target.name]: 'triangle',
})
};
render() {
return <div className="form">
<div className="head_form">
<div className="head_icon"></div>
</div>
<form>
<p className="inputs">EMAIL ADDRESS</p>
<div className="required" style={this.state}>required</div>
<div className="inputs_container">
<input type="email" placeholder="Enter your email address"/>
<div className={this.state.emailInput} name="emailInput" data-id="1" onMouseEnter={this.mouseEnter} onMouseLeave={this.mouseLeave}></div>
</div>
<p className="inputs">PASSWORD</p>
<div className="required">required</div>
<div className="inputs_container">
<input type="password" placeholder="Enter your password"/>
<div className={this.state.passwordInput} name="passwordInput" data-id="2" onMouseEnter={this.mouseEnter} onMouseLeave={this.mouseLeave}></div>
</div>
类表单扩展了React.Component{
建造师(道具){
超级(道具);
this.mouseEnter=this.mouseEnter.bind(this);
this.mouseLeave=this.mouseLeave.bind(this);
此.state={
emailInput:'三角形',
密码输入:“三角形”
}
}
穆塞纳(e){
这是我的国家({
[e.target.name]:“圆圈”,
})
};
穆斯勒夫(e){
这是我的国家({
[e.target.name]:“三角形”,
})
};
render(){
返回
电子邮件地址
必修的
密码
必修的
这不是最好的解决方案,我更喜欢使用CSS类(.item visible,例如)
但是,我认为我可以通过这个JSFIDLE帮助您理解应该如何工作:
这是小提琴中的代码:
class Form extends React.Component{
constructor(props){
super(props);
this.mouseEnter = this.mouseEnter.bind(this);
this.mouseLeave = this.mouseLeave.bind(this);
this.state = {
inputWithMouseOn:-1
}
}
mouseEnter(e){
if(e.currentTarget.dataset.id) {
this.setState({inputWithMouseOn:parseInt(e.currentTarget.dataset.id)})
}
}
mouseLeave(e){
if(e.currentTarget.dataset.id) {
if(parseInt(e.currentTarget.dataset.id) === this.state.inputWithMouseOn){
this.setState({inputWithMouseOn:-1})
}
}
}
render() {
var inputOnestyle = this.state.inputWithMouseOn === 1 ? {visibility:"visible"} : {visibility:"hidden"};
var inputTwoStyle = this.state.inputWithMouseOn === 2 ? {visibility:"visible"} : {visibility:"hidden"};
return (<div className="form">
<form>
<p className="inputs">EMAIL ADDRESS</p>
<div className="required" style={inputOnestyle}>required</div>
<div className="inputs_container">
<input type="email" placeholder="Enter your email address"/>
<div className="triangle" data-id="1" onMouseEnter={this.mouseEnter} onMouseLeave={this.mouseLeave}>AAAA</div>
</div>
<p className="inputs">PASSWORD</p>
<div className="required" style={{visibility:this.state.inputWithMouseOn === 2 ? "visible" : "hidden"}}>required</div>
<div className="inputs_container">
<input type="password" placeholder="Enter your password"/>
<div className="triangle" data-id="2" onMouseEnter={this.mouseEnter} onMouseLeave={this.mouseLeave}>AAAA</div>
</div>
</form>
</div>
);
}
}
ReactDOM.render(
<Form name="World" />,
document.getElementById('container')
);
类表单扩展了React.Component{
建造师(道具){
超级(道具);
this.mouseEnter=this.mouseEnter.bind(this);
this.mouseLeave=this.mouseLeave.bind(this);
此.state={
用鼠标输入:-1
}
}
穆塞纳(e){
if(例如,currentTarget.dataset.id){
this.setState({inputWithMouseOn:parseInt(e.currentTarget.dataset.id)})
}
}
穆斯勒夫(e){
if(例如,currentTarget.dataset.id){
if(parseInt(e.currentTarget.dataset.id)==this.state.inputWithMouseOn){
this.setState({inputWithMouseOn:-1})
}
}
}
render(){
var inputOnestyle=this.state.inputWithMouseOn==1?{visibility:“visible”}:{visibility:“hidden”};
var inputwostyle=this.state.inputWithMouseOn==2?{visibility:“visible”}:{visibility:“hidden”};
返回(
电子邮件地址
必修的
AAAA
密码
必修的
AAAA
);
}
}
ReactDOM.render(
,
document.getElementById('容器')
);