に反応「未定義のプロパティ 『のonClick』を読み取ることができません」。しかし、私はまた、Reactstrapと箱から出てくるButton
部品のonClick
動作を拡張する必要があります。そのために、私はカスタムNanoButton
コンポーネントをデフォルトのものに再構成しました。あなたが見ることができるように、私は必要には、ブートストラップ統合のための私のプロジェクトで、私はReactstrapを使用していますコンポーネント
import { Component } from 'react';
import { Button } from 'reactstrap';
class NanoButton extends Component {
constructor(props) {
super(props);
this.onClick = this.onClick.bind(this);
}
onClick(e) {
var circle = document.createElement('div');
e.target.appendChild(circle);
var d = Math.max(e.target.clientWidth, e.target.clientHeight);
circle.style.width = circle.style.height = d + 'px';
var rect = e.target.getBoundingClientRect();
circle.style.left = e.clientX - rect.left -d/2 + 'px';
circle.style.top = e.clientY - rect.top - d/2 + 'px';
circle.classList.add('ripple');
this.props.onClick();
}
render() {
return (
<Button
className={this.props.className}
type={this.props.type}
color={this.props.color}
size={this.props.size}
onClick={this.onClick}
>
{this.props.children}
</Button>
);
}
}
export default NanoButton;
:私が言ったように、
<NanoButton type="button" onClick={() => Router.push('/about')}>About</NanoButton>
NanoButton
コンポーネントの既存Button
のクラスに私のカスタムonClick
機能を追加します:これは私がそれを呼んでいる方法ですNanoButton
コンポーネントは、最終的には小道具として渡されonClick
機能を実行する前に、いくつかのカスタムアクティビティを実行します。ブラウザにロードするときしかし、それはonClick on undefined
を読み取ることができないと言ってthis.props.onClick();
で失敗しますか?私はここで何が欠けていますか?
前の回答に私のコメントを参照してください。 – TheLearner
私はあなたがしようとしていることを理解しています。これはうまくいくはずです。onClickメソッドの 'this.props.onClick();'という行からの問題は、このメソッドがクラス 'thisにバインドされていないためです。小道具は未定義です。私はそれをバインドする場合 –
はしかし、唯一のonClickは小道具の実行と同じように渡され、コンポーネントで定義された1はスキップ。それは私が探しているものではありません。 NanoButton **で定義されたonClickを実行する必要があります。** onClickは、それをpropsとして渡します。 – TheLearner