javascript - 使用 React JS 的 FadeIn 和 FadeOut 效果

标签 javascript css

我有这样的东西:

var Hello = React.createClass({
    getInitialState: function(){
    return {
        opacity: 0
    }
  },

  handleClick: function(event){
    event.preventDefault();
    this.setState({opacity: 1});
  },

  render: function() {
    return <div>
        <div style={{opacity: this.state.opacity, transition: "opacity 1s"}}>Test</div>
      <a href="" onClick={this.handleClick}>Click</a>
    </div>;
  }
});

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);

这里是 jsfiddle

我希望带有文本测试的 div 在页面加载时不显示。然后,如果我单击该 div 显示的链接。这就是这个例子所做的。

但我希望在点击后 div 出现后,几秒钟后它再次消失。 (我需要以某种方式再次将不透明度设置为 0)。

有什么建议吗?

最佳答案

您可以添加 FadeOut 效果,将回调函数传递给 setState()

一个简单的解决方案如下所示

handleClick: function(event){
    event.preventDefault();
    this.setState({opacity: 1}, () => setTimeout(() => this.setState({opacity:0}),4000)); 
},

jsfiddle

更好的是

handleClick: function(event){
    event.preventDefault();
    this.setState({opacity: 1}, () => {
        if(!this.timeout)
            clearTimeout(this.timeout);
        this.timeout = setTimeout(() => this.setState({opacity:0}),4000);
 });

jsfiddle

关于javascript - 使用 React JS 的 FadeIn 和 FadeOut 效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38788967/

相关文章:

javascript - Material ui - 无法使用 makeStyles 覆盖日期选择器样式

javascript - 使用 NativeScript 在 Android 上删除按钮的边距

jquery - 悬停分区系统

javascript - 响应式 jQuery 脚本加载

javascript - 使用 javascript 在 HTML 表格中显示 firebase 数据

javascript - 为什么 jQuery 悬停方法在这种情况下不起作用?

javascript - 在 SIP.js 中接听电话时如何获取 localStream(使麦克风静音)

javascript - CSS 选择器和 querySelector 函数之间的结果差异

javascript - 保持图像和文本彼此相邻

css - webpack2 : how to import Bootstrap CSS for react-bootstrap to find its styles?