gpt4 book ai didi

javascript - 异步调用两个值更新的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-01 04:03:05 24 4
gpt4 key购买 nike

我使用两个异步函数来模拟ajax

  • 一个变量用于获取组合框的选项
  • 用于获取组合框值的其他变量

但是当页面加载组合框时,原始值“0”卡住并且不更新。

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(
<App />,
document.getElementById('root')
);

App.js

import React, { Component } from 'react';

const Select = ({ options=[], keyOfName, placeholderMessage, defaultValue="-1" }) => {
return (
<select required defaultValue={defaultValue}>
<option disabled value="-1">{placeholderMessage}</option>
{
options.map(function (option, index) {
return (
<option key={index} value={index}>
{option}
</option>
);
})
}
</select>
)
}

class Bug extends Component {
constructor(){
super();
this.state = {index: 0}
let self = this;
setTimeout(()=>{
console.log("before setState :" + this.state.index);
self.setState({index: 1});
console.log("after setState :" + this.state.index);
}, 2000);
}

render(){
return (
<Select
options={this.props.options}
defaultValue={this.props.options ? this.state.index : -1}
placeholderMessage="Seleccione una Cuenta"
/>
)
}
}

class App extends Component {
constructor(){
super();
this.state = {options: []};
let self = this;
setTimeout(()=>{self.setState({options: ["ji", "xo"]})}, 2000);
}

render() {
return (
<div>
<Bug options={this.state.options}/>
</div>
);
}
}

export default App;

index.html

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
<title>React App</title>
</head>
<body>
<div id="root"></div>
</body>
</html>

这是输出

enter image description here

这里是存储库 https://github.com/wilcus/stackoverflow-question/

最佳答案

您的问题是您正在使用 defaultValue而不是value作为标签 <select/> 中的参数

阅读Facebook documentation on uncontrolled component了解更多。

关于javascript - 异步调用两个值更新的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42028685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com