JSONから項目を読み込み、クリック時に説明付きでドロップダウンリストを切り替えようとしています。私は静的divに順番に要素を表示することができます(例えば:loc1 & desc1, loc2 & desc2
)。第2部分(desc)が隠れているときに正しくレンダリングする方法を見つけるのが難しく、loc divをクリックしたときのみ表示されます。ReactJS:JSON要素を順番にマッピングし、クリック時に非表示のdivを表示する方法
loc1 & loc2, desc1 & desc2
ではなく、loc1 & desc1, loc2 & desc2
と表示されるように、結果をマップするにはどうすればよいですか?
コード:
var places = {
library: {
location: [
{
loc_name: "library1",
"desc": "desc1 : Modern and spacious building"
},
{
loc_name: "library2",
"desc": "desc2 : A cosy small building"
}
]
}
};
function contentClass(isShow) {
if (isShow) {
return "content";
}
return "content invisible";
}
class Toggle extends React.Component {
constructor(props) {
super(props);
this.state = { isShow: false };
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState(function (prevState) {
return { isShow: !prevState.isShow };
});
}
render() {
const libraries_desc = places.library.location.map((libr) =>
<div>
<p>{libr.desc}</p>
</div>
);
const lib_names = places.library.location.map((libr) =>
<div>
<p>{libr.loc_name}</p>
</div>
);
return (
<div>
<div className='control' onClick={this.handleClick}>
<h4>{lib_names}</h4>
<div className={contentClass(this.state.isShow)}>{libraries_desc}</div>
</div>
</div>
);
}
}
render((
<Toggle />
), document.getElementById('root'));
現在の結果:
library1
library2
desc1 : Modern and spacious building
desc 2 : A cosy small building
望ましい結果:あなたのToggle
コンポーネントをbすべき
library1
desc1 : Modern and spacious building (hidden but shown when clicked)
library2
desc 2 : A cosy small building (hidden but shown when clicked)
は、それが適切に閉じていてもかかわらず、なぜそれはそうだろう、location.map((LiBrを、インデックス)のタグを閉じるには、構文エラーを見せて – Amma
それを? map()の最後に '(')がありませんでした。レンダリングメシードのコードをもう一度見てください。 –
それはそれでした。 – Amma