【发布时间】:2020-07-13 19:27:50
【问题描述】:
我正在使用 React,我是新手,它说要使用 map 方法来迭代数组。当我这样做时,整个数组都会记录到控制台,而不是我想要的单个单词。
当用户在文本框中键入股票代码时,我试图调用它们。但是在函数getSymbol() 下,即使我在渲染中使用了map,符号的状态仍然是一个数组。谁能指出我正确的方向?或者我该怎么做才能获得单个元素。
这是我的代码:
class Symbol extends React.Component {
constructor(props) {
super(props);
this.state = {
userInput: '',
symbol: [],
isLoaded: false
}
}
typeSymbol = (e) => {
this.setState({
userInput: e.target.value.toUpperCase()
}, () => {
console.log(this.state.userInput)
})
}
getSymbol = (e) => {
e.preventDefault(),
this.setState({
symbol: this.state.symbol
}, () => {
console.log(this.state.symbol)
})
}
componentDidMount() {
fetch(`https://finnhub.io/api/v1/stock/symbol?exchange=US&token=${key}`)
.then(res => res.json())
.then(
(results) => {
this.setState({
isLoaded: true,
symbol: results
});
// console.log(this.state.symbol)
},
(error) => {
this.setState({
isLoaded: true,
error
});
}
)
}
render() {
const { symbol, userInput } = this.state
if (userInput === symbol) {
return (
symbol.map((symbol, i) => (<span className="symbol" key={i}>{symbol.displaySymbol}</span>)),
console.log('same')
)
} else {
return (
<div className="enterstock">
<h1 className="title">Enter Stock Symbol</h1>
<form className="inputfields" onSubmit={this.getSymbol}>
<input type="text" className="symfields" name="symbolname" onChange={this.typeSymbol}></input>
<button type="submit" className="btn">Send</button>
</form>
</div >
)
}
}
}
【问题讨论】:
-
只是一个建议,但我认为您的类名与名为 Symbol 的内置 JS 功能相冲突。
-
@JohnPavek 感谢您提供的信息!
标签: javascript reactjs