単純なWizard
コンポーネントを作成したいと思います。私はどのようにonChange
入力イベントのためのhandleChange
関数をバインドする方法と渡されたコンテキスト(どこかで定義され、ParentClass
にインスタンス化された私のカスタムクラスです)に取得する方法がわかりません。私はコンパイルするためES2015
とBabel
を使用リアクションテンプレートのバインディング機能
export class ParentClass extends React.Component {
render() {
let template = `<input value=${context.testVal} onChange=${context.handleChange.bind(context, event)}>`; // how to invoke this code inside Wizard using TestContext class???
let testContext = new TestContext();
return (
<Wizard template={template} context={testContext} />
);
}
}
export class TestContext {
testVal = null;
constructor() {
this.testVal = 10;
}
handleChange(e) {
console.log(e);
}
}
export class Wizard extends React.Component {
context: null;
constructor(props) {
super(props);
this.context = this.props.context;
}
render() {
return (
<div dangerouslySetInnerHTML={{__html: this.props.template}}>
</div>
);
}
}
:
Uncaught SyntaxError: Unexpected token }
ここに私のWizard
コンポーネントと私はそれをテストするために作成した単純なテンプレートです。
[編集]
私は私のコードとの質問に編集しました。私は今、あなたが "$を取り除く"と言っているものを見ます。
私は私を理解できませんでした。 HTML
いくつかの変数バインディング(文字列として)+宣言されたテンプレートのすべてのロジックを含むべきいくつかのコンテキストクラスを宣言したいと思います。私はそれらを持っているとき、私はそれらをWizard
にparamsとして渡し、このWizard
(JSX
を同時に実行する)のHTML
を置き換えるためにテンプレートを使用したいと思います。言い換えると。 Wizard
コンポーネントに動的テンプレート用の汎用メカニズムが必要です。
この意味ではテンプレートは必要ありません - 単に ''を渡してください – Chris
@Chrisは正しいですし、明らかに '$'記号も削除する必要があります。 –
私の編集した質問をご覧ください。 – Nickon