私はReactとjQueryを使用しています。私は、同じApp
コンポーネントの子である、Index
とBody
の2つのコンポーネントを持っています。子コンポーネントのオブジェクトに.onClickメソッドを追加できません。
Index
のオブジェクトを.onClick関数でレンダリングしたいとします。ただし、関数は最初にレンダリングするにはBody
が必要です。
私はBody
内のオブジェクトにアクセスする必要があるので、私は親App
コンポーネントでIndex
右からオブジェクトに.onClick機能を追加することを考えました。
これが私のやり方です。すべてがロードされますが、要素には.onClick機能はありません。要素をクリックしても、コンソールには何も印刷されません。
class App extends React.Component {
render() {
return (
<div>
<Index ref="index"/>
<Body ref="body"/>
</div>);
}
componentDidMount() {
function autoScroll (…) {
const fp = findDOMNode(this.refs.body.refs.fullpage); // can only do this after rendering
$(fp).fullpage.moveTo(…); // function to be called by object on Index
console.log("clicked");
}
const lab = findDOMNode(this.refs.index.refs.lab)
$(lab).onClick = function(){ this.autoScroll(…); };
}
}
「onclick」ハンドラは、コンポーネントの最初のマウント後に呼び出されます。私は 'componentDidMount()'の外であなたのautoScroll関数を定義できると思います。 –
私は、 'fp'オブジェクトに対してautoScrollに追加の引数を追加することができます。 'fp = findDOMNode ...'は残念なことにレンダリングの後で 'componentDidMount'でのみ呼び出すことができます。しかしどちらの方法でも、これはまだ機能しません。 –
jqueryを使用して、反応中のonclickハンドラを設定しないでください。代わりに、関数は、props経由でIndexに渡し、内部Indexはそれを必要とするオブジェクトに渡します。 – xDreamCoding