Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在MouseCenter上更改选定元素-反应_Reactjs_Mouseevent - Fatal编程技术网

Reactjs 在MouseCenter上更改选定元素-反应

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',

在OnMouseCenter事件中更改所选元素时遇到问题。我有两个相同的元素,我想改变我移动鼠标的当前元素的样式

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('容器') );