反应可见 + 添加 class

React Visible + Add class

有效:

var onChange = function (isVisible) {
    console.log('Element is now %s', isVisible ? 'visible' : 'hidden');
    if(isVisible = 'visible'){
        //here I need add class
    }
};

并且 VisibilitySensor 在内部组件 Needs in div className =Need.

<VisibilitySensor onChange={onChange}/>

代码运行良好,渲染后我可以看到 console.log。 所以。我的问题是什么。

我不想添加 class 动画 fadeInUpif isVisible = 'visible'

如何将此 class 添加到 需要 className React?

如果有帮助,这里是所有代码:

https://pastebin.com/bnTKbXC4

不知道你是不是在管理状态。但看起来这是有状态的组件,那为什么不呢。

// just below this line -  class Needs extends React.Component 
state = {
    NeedsBrother: false // setting this variable to false initially
}

然后

var onChange = function (isVisible) {
    console.log('Element is now %s', isVisible ? 'visible' : 'hidden');
    if(isVisible = 'visible'){
        this.setState(prevState => {
            NeedsBrother: true
        })
    }
};

并在您的渲染函数中

<div className={`Need ${this.state.NeedsBrother}`}>

您是否将 NeedsBrother 声明为状态变量。

this.state={NeedsBrother:false}

这是对您的代码的重构,我不确定它是否会起作用。

class Needs extends React.Component{


    constructor(props)
    {
        super(props);
        this.state = {
            Need: 'Need'
            };

        this.onChange = this.onChange.bind(this);
    }

    onChange(isVisible)
    {
        console.log('Element is now %s', isVisible ? 'visible' : 'hidden');
        if(isVisible = 'visible')
        {
            this.setState( {Need : 'Need ' + ' animated fadeIn' } );
        }
        else
        {
            this.setState( {Need : 'Need ' } );
        }
    }

    render()
    {
        var VisibilitySensor = require('react-visibility-sensor');

        return(
            <div className ={this.state.Need}>

                <VisibilitySensor onChange={this.onChange}/>

                <div className ="Section_Text">
                    <h1>Solutions tailored to your needs</h1>
                    <p><b>Creating experience in real & digital world.</b></p>
                    <p>
                        Cooperation with a lot of designers, photographers,
                        programmist & specialists from various field allows
                        to create effective solutions for your business goals.</p>
                </div>

                <img src={bulb} />
            </div>
        )
    }
}