【发布时间】:2017-10-12 23:26:19
【问题描述】:
我想要做的应该相当简单,但似乎我无法使用 this 获得对特定组件的引用
所以这里有我的 App.js
import React, { Component } from 'react';
import CoolBox from './coolBox.js';
import './App.css';
class App extends Component {
changeColor(){
$(this).css('background','blue');
}
render() {
return (
<div className="App">
<CoolBox changeColor={function(){ this.changeColor() }.bind(this)} />
<CoolBox changeColor={function(){ this.changeColor() }.bind(this)} />
<CoolBox changeColor={function(){ this.changeColor() }.bind(this)} />
</div>
);
}
}
export default App;
然后是 CoolBox.js,它只是一个带有红色背景的简单框:
import React, { Component } from 'react';
import $ from 'jquery';
class CoolBox extends Component {
render() {
return (
<div onClick={this.props.changeColor} className="box"></div>
);
}
}
export default CoolBox;
现在我想要实现的是,当您单击 3 个框中的任何一个时,背景颜色将仅在被单击的特定框上发生变化。
如果 $(this) 无法引用,我似乎无法使用任何 jquery 方法。那么如何在 React 中实现这个简单的功能呢?
【问题讨论】:
-
为什么要在App中定义
changeColor方法?如果你在 Coolbox 中定义它,你应该可以使用普通的this。一般来说,不推荐以这种方式将 jQuery 混合到 React 中。如果你想要类似的东西,请使用 React 的ref功能。 -
你应该避免使用 jQuery 和 React 一起改变 DOM。
标签: javascript jquery html css reactjs