にネストされている場合、チェックボックスは、Iが反応からinput type=checkbox
とHTML a
-tagを用いた特有の問題が正しく表示されません。問題は、チェックボックスを直接クリックすると、a
タグではなく、チェックボックスが正しく再レンダリングされず、状態が更新されたということです。16入力タイプを反応させる= HTML Aタグ
例:以下のコードでは、コンポーネントをレンダリングし、チェックボックスを直接クリックします。この場合、showMapはコンストラクタでtrueに設定されているのでfalseに設定されますが、チェックボックスはhtmlビューでチェックされます。ただし、a
のタグをクリックして、チェックボックスに直接は表示されない場合は、状態showMapとビューの両方が正しく更新されます。
event.preventDefault();
をtoggleCheckbox
にコールしないようにすることができますが、それを行うと、a
タグをクリックするとアプリがページの上部にスクロールします。
例:
https://codesandbox.io/s/w2x8vqq8xl
コード:
import React from "react";
import { render } from "react-dom";
const styles = {
fontFamily: "sans-serif",
textAlign: "center",
//marginTop: "1000px"
};
class Menu extends React.Component {
constructor(props) {
super(props);
this.state = {
showMap: true
};
}
toggleCheckbox = event => {
this.setState({ showMap: !this.state.showMap });
event.preventDefault();
};
render() {
return (
<div>
<h1>{this.state.showMap ? "Show" : "hide"}</h1>
<a href="#" role="button" onClick={this.toggleCheckbox}>
<input
type="checkbox"
title="test"
name="showMap"
checked={this.state.showMap}
readOnly
/>
Show map
</a>
</div>
);
}
}
const App =() => (
<div style={styles}>
<Menu />
</div>
);
render(<App />, document.getElementById("root"));
アップデート:リアクトで
問題を作成しました。
https://github.com/facebook/react/issues/11539
これは完全にreactjsバグのようです。それを報告する場合は、質問にリンクを入れてください。 – zerkms
@zerkms私はそれを疑った。作成された問題とリンクされた質問が更新されました。 – Ogglas