私はできるだけ簡潔にこれを保つために一生懸命努力します。どのようにして、onループをReactのforループの中に組み込むのですか?
jsonのデータ状態(ライブラリ)からアイテムを削除したいと思っていますが、現時点では、「削除」ボタンがクリックされたときに簡単なconsole.logを起動できません。
すべてのものが負荷で完全に表示されます。 "Delete"
ボタンのonClick={this.deleteClickHandler.bind(this)}
イベントに書き込むとエラーが発生します。
親コンポーネント:
constructor(){
super();
this.state = {
test: "SiteFront State",
library : {
"copy" : {
"name" : "Copy",
"input" : "CMD + C",
"os" : "All"
},
"paste" : {
"name" : "paste",
"input" : "CMD + V",
"os" : "All"
}
},
libraryKeys:null
};
};
子コンポーネント:
componentDidMount(){
this.SetUpItemsHandler();
};
componentWillReceiveProps(){
this.SetUpItemsHandler();
}
deleteClickHandler(e){
console.log("delete Button Clicked");
};
SetUpItemsHandler(){
var libraryKeys = Object.keys(this.props.library);
document.getElementById("libraryInner").innerHTML = "";
for(var i = 0;i < libraryKeys.length;i++){
document.getElementById("libraryInner").innerHTML += "<li key={i}>"+
"<h2>Name: "+ this.props.library[libraryKeys[i]].name +"</h1>"+
"<button onClick={this.deleteClickHandler.bind(this ,i)}>Delete</button>"
"</li>";
};
};
The onClick={this.deleteClickHandler.bind(this)}
イベントは、コンソールにエラーを発生させます:
(index):16 Uncaught TypeError: Cannot read property 'bind' of undefined(…)
私は正しくキー値を含むだろうか?私は何が欠けていますか? 私は配列で.map関数を使用しましたが、jsonキーオブジェクトでそれを行う理想的な方法がわからないので、代わりにforループを使用しようとしました。これは間違っていますか?
ご迷惑をおかけして申し訳ありません。 は、 萌え
EDITありがとう: を私は含めることを試みたが、それは取っていない私のレンダリング機能の中では、何もコンソールにエラーなしで表示されなかっ:
render(){
var listItems = function(){
var libraryKeys = Object.keys(this.props.library);
document.getElementById("libraryInner").innerHTML = "";
for(var i = 0;i < libraryKeys.length;i++){
document.getElementById("libraryInner").innerHTML += "<li key={i}>"+
"<h2>Name: "+ this.props.library[libraryKeys[i]].name +"</h1>"+
"<button onClick={this.deleteClickHandler.bind(this)}>Delete</button>"+
"</li>"
};
};
return(
<div>
Library Here<br/><br/>
<div id="library">
<ul id="libraryInner">
{listItems}
</ul>
</div>
<AddItemForm
inputUpdateHandler={this.props.inputUpdateHandler.bind(this)}
nameInputUpdateHandler={this.props.nameInputUpdateHandler.bind(this)}
inputInputUpdateHandler={this.props.inputInputUpdateHandler.bind(this)}
osInputUpdateHandler={this.props.osInputUpdateHandler.bind(this)}
addItemHandler={this.props.addItemHandler.bind(this)}
/>
</div>
);
}
ダイレクトHTMLを操作するためにエラーが発生します。bindを使用すると、bindを使用すると、htmlがreact HTML要素を使用して生成される必要があります。なぜレンダリングメソッドを使ってhtmlをレンダリングしなかったのですか? – abhirathore2006
私は、私がレンダリング機能の中に関数を含めたアップデートを使って投稿を編集しました。それはかかりませんでした。コンソールエラーなしでは何も表示されません。 –
私の答えを確認 – abhirathore2006