1
今は1つのプラットフォームしか選択できませんでしたが、どのように複数のプラットフォームを選択できますか。私はプラットフォームの配列を使用してみましたが、それは動作しませんでした。そうすれば、クリックしたときに1つのプラットフォームでも選択されません。ここでreduxを使用して複数のプラットフォームを選択
iは、配列を使用するために
const socialPlatforms = [
{ name: 'facebook', fontName: 'facebook-square', icon: 'facebook-icon' },
{ name: 'twitter', fontName: 'twitter-square', icon: 'twitter-icon' },
{ name: 'instagram', fontName: 'instagram', icon: 'instagram-icon' },
];
const mapDispatchToProps = (dispatch) => (
{
handleSubscription: (subscription) => dispatch(subscriptionHandled(subscription)),
selectPlatform: (platform) => dispatch(addPlatform(platform)),
}
);
function mapStateToProps(state) {
return {
settings: state.settings,
};
}
class Settings extends React.PureComponent {
addPlatform = (...platform) => {
this.props.selectPlatform(platform);
}
render() {
const { settings } = this.props;
const socialPlatform = socialPlatforms.map((platform, index) =>
<FontAwesome
name={platform.fontName}
key={index}
className={`icon-pointer font-awesome-icons ${settings.platform === platform.name ? platform.icon : ''}`}
size="5x"
onClick={() => { this.addPlatform(platform.name); }}
/>
);
return (
<div>
<h1>Settings Page</h1>
<Container>
<Row>
<Col xs={12}>
{socialPlatform}
</Col>
</Row>
</Container>
</div>
);
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Settings);
const initialState = {
platform: [],
};
export default(state = initialState, action) => {
switch (action.type) {
case ADD_PLATFORM:
return { ...state, platform: action.platform };
default:
return state;
}
};
はい、私のために働いた。ソリューションに感謝します。なぜフィルター機能を使いましたか? – Serenity
このように切り替えることはありません。選択したアイテムを選択すると、チェックを外す必要があります。しかし、それは起こっていません – Serenity
'filter'メソッドはいくつかの項目なしで新しい配列を生成することを可能にします。コンソールで 'index'値をデバッグできますか? – lunochkin