正方形のdivをクリックして色を白から黒に変更できる非常にシンプルなアプリケーションを作成しています。しかし、私は問題を抱えています。 onClick関数を使用して、ユーザーが正方形をクリックして色を変更できるようにしたいのですが、機能していないようです。スパンと空のpタグを使用してみましたが、それも機能しません。
問題のコードは次のとおりです。
var Box = React.createClass({
getInitialState: function() {
return {
color: 'white'
};
},
changeColor: function() {
var newColor = this.state.color == 'white' ? 'black' : 'white';
this.setState({
color: newColor
});
},
render: function() {
return (
<div>
<div
style = {{background: this.state.color}}
onClick = {this.changeColor}
>
</div>
</div>
);
}
});
ここにCodePenの私の小さなプロジェクトへのリンクがあります。 http://codepen.io/anfperez/pen/RorKge
これは動作します
var Box = React.createClass({
getInitialState: function() {
return {
color: 'white'
};
},
changeColor: function() {
var newColor = this.state.color == 'white' ? 'black' : 'white';
this.setState({ color: newColor });
},
render: function() {
return (
<div>
<div
className='box'
style={{background:this.state.color}}
onClick={this.changeColor}
>
In here already
</div>
</div>
);
}
});
ReactDOM.render(<Box />, document.getElementById('div1'));
ReactDOM.render(<Box />, document.getElementById('div2'));
ReactDOM.render(<Box />, document.getElementById('div3'));
あなたのCSSで、あなたが持っているスタイルを削除してこれを入れてください
.box {
width: 200px;
height: 200px;
border: 1px solid black;
float: left;
}
onClick
を呼び出している実際のdivのスタイルを設定する必要があります。 divにclassNameを指定し、スタイルを設定します。また、App
をdomにレンダリングしているこのブロックを削除することを忘れないでください。Appは定義されていません
ReactDOM.render(<App />,document.getElementById('root'));
あなたの箱にはサイズがありません。幅と高さを設定すると、うまく機能します:
var Box = React.createClass({
getInitialState: function() {
return {
color: 'black'
};
},
changeColor: function() {
var newColor = this.state.color == 'white' ? 'black' : 'white';
this.setState({
color: newColor
});
},
render: function() {
return (
<div>
<div
style = {{
background: this.state.color,
width: 100,
height: 100
}}
onClick = {this.changeColor}
>
</div>
</div>
);
}
});
ReactDOM.render(
<Box />,
document.getElementById('box')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id='box'></div>
これも機能します:
this.state.color==='white'?'black':'white'
で変更しました。
ドロップダウン値から色を選択し、「黒」の代わりに更新することもできます。
( CodePen )
React.jsの簡単なテストボタンが必要でした。これが私がやったことであり、うまくいきました。
function Testing(){
var f=function testing(){
console.log("Testing Mode activated");
UserData.authenticated=true;
UserData.userId='123';
};
console.log("Testing Mode");
return (<div><button onClick={f}>testing</button></div>);
}