私はReactの新機能ですが、一般的にはjavascriptにかなり精通しています。 Reactを始めるのに本当に苦労していましたが、次の3つのボタンでどのように状態を管理すべきか、誰かが私に説明できるかどうか疑問に思っていました。反復配列の各インデックスの状態を管理するにはどうすればいいですか?REACT
MY主成分:
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
var classNames = require('classnames');
import classnames from 'classnames';
import Fans from './Buttons'
export default class Main extends React.Component {
constructor(props) {
super(props);
this.state = {
Buttons:[
{ src: '/src/images/1.svg',
button: 1
},
{ src: '/src/images/2.svg',
button: 2
},
{
src: '/src/images/3.svg',
button: 3
}
]
}
}
render() {
var buttons = this.state.Buttons.map(function(button){
return(<Buttons key={button.button}
buttNum={button.button}
src={button.src}
/>);
})
return (
<div>
{buttons}
</div>
);
}
};
MY Buttonコンポーネント:
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import classnames from 'classnames';
var classNames = require('classnames');
export default class Buttons extends React.Component {
constructor(props) {
super(props);
this.state = {isActive: false}
this.selectButton = this.selectButton.bind(this)
}
selectButton() {
let active = !this.state.isActive;
this.setState({isActive: active})
}
render() {
let classes = classnames('btn-success', {selected: this.state.isActive});
return (
<img src={this.props.src}
buttNum={this.props.key}
onClick={this.selectButton}
className={classes} />
);
}
};
は、どのように私は個々のボタンで状態を管理するのです!なぜこれを達成するのが難しいのですか?jQueryやAngularではこれを5行のコードで行うことができます!
「選択された」クラスを一度に1つのボタンにしか使用できないようにしようとしています - 選択されたボタンを個々のボタンで切り替えることはできますが、現在のすべてのボタンの状態を管理する方法はわかりませんselectButton()クリックハンドラ。現在、私はクリックされたボタンの状態にアクセスすることができます...
ご協力いただければ幸いです!ありがとう。
erichrardson30 @おかげで、これは私がやろうとしていたものよりもはるかに理にかなっています。 – Maxwelll
あなたが書いたchangeActive(index)関数はうまくいきません。私はそれをどのように修正するか考えていません。構文エラーを投げずに配列の特定のインデックスに対してthis.setStateをどのように呼び出しますか? – Maxwelll
@MaxwellLaskyその機能を更新しました。申し訳ありません。配列内の項目のStateを更新することはできません。コピーを作成し、コピーを必要なものに更新して、配列全体の状態を設定する必要があります。 – erichardson30