set()'in Map后,返回对象不是Map
After set()'ing Map, returned object is not a Map
我正在尝试迁移到 immutable.js 我的州:
class Register extends Component<{}, Map<string, string>> {
state = Map<string, string>();
onInputValueChange(e) {
const { name, value } = e.target;
const newState = this.state.set(name, value);
this.setState(newState);
}
render() {
...
<input onChange={this.onInputValueChange.bind(this)} placeholder="john.doe@example.com" name="email" type="email" />
}
}
所以,每当我第一次输入内容时,它都能正常工作。但是每当我输入第二个字母时,我都会收到 TypeError: this.state.set is not a function
错误。如果我做 Map.isMap(this.state)
,第一次 returns True,但之后每次 returns False。
您不应将整个状态设置为 Map,而是在您的状态中创建一个不可变变量:
class Register extends Component<{}, { data: Map<string, string> }> {
state = {data: Map<string, string>()};
onInputValueChange(e) {
const { name, value } = e.target;
this.setState(({ data }) => ({
data: data.set(name, value),
}));
}
...
}
请查看 this wiki 页面以获取有关使用 Immutable 作为 React 状态的更多信息。
我正在尝试迁移到 immutable.js 我的州:
class Register extends Component<{}, Map<string, string>> {
state = Map<string, string>();
onInputValueChange(e) {
const { name, value } = e.target;
const newState = this.state.set(name, value);
this.setState(newState);
}
render() {
...
<input onChange={this.onInputValueChange.bind(this)} placeholder="john.doe@example.com" name="email" type="email" />
}
}
所以,每当我第一次输入内容时,它都能正常工作。但是每当我输入第二个字母时,我都会收到 TypeError: this.state.set is not a function
错误。如果我做 Map.isMap(this.state)
,第一次 returns True,但之后每次 returns False。
您不应将整个状态设置为 Map,而是在您的状态中创建一个不可变变量:
class Register extends Component<{}, { data: Map<string, string> }> {
state = {data: Map<string, string>()};
onInputValueChange(e) {
const { name, value } = e.target;
this.setState(({ data }) => ({
data: data.set(name, value),
}));
}
...
}
请查看 this wiki 页面以获取有关使用 Immutable 作为 React 状态的更多信息。