私はマテリアルのUIを使用していて、プロジェクトのために反応し、私が部品を持って、そのおおよそ次のようになります。クリック時にListItemのスタイルを変更するにはどうすればよいですか?
import React, { Component } from 'react';
import { List, ListItem } from 'material-ui';
import PropTypes from 'prop-types';
class MyComp extends Component {
constructor(props) {
super(props);
this.onClickMethod = this.onClickMethod.bind(this);
}
onClickMethod() {
// removed for brevity
}
render() {
return (
<div>
<List>
{this.props.myData.map(pp => {
return (
<ListItem key={pp.name}
style={styles.listItem}
primaryText={pp.name}
onClick={this.onClickMethod}
/>
)
})}
</List>
</div>
);
}
}
const styles = {
listItem: {
// removed for brevity, includes some styles
},
listItemClicked: {
// removed for brevity, includes different styles than the ones in listItem
},
};
MyComp.propTypes = {
myData: PropTypes.array.isRequired,
};
export default MyComp;
は今の点は、私が最初にすべての私のListItemは、同じスタイルを持つようにしたいということです、つまり、オブジェクトのプロパティであるstyles.listItem
内のスタイルです。その後、ユーザーが特定のListItemをクリックすると、そのスタイルがstyles.listItemClicked
オブジェクトプロパティ内にあるスタイルに変更されます。ただし、残りの未使用ListItemはスタイルを変更すべきではありません。さらに、ユーザーがすでにListItemをクリックして別のListItemをクリックすると、以前にクリックされたListItemのスタイルを、styles.listItem
内の既定のスタイルに変更し、新しくクリックしたListItemをstyles.listItemClicked
スタイルに変更します。そのため、いつでもゼロ(最初)またはListItemの1つだけがstyles.listItemClicked
内のスタイルを持つようにします。どのようにReactでこれを達成するためのアイデア?