我试图将提交功能添加到我的语义ui-react搜索组件中,但它的行为方式与我想要的方式不同。
提交应该对api进行ajax调用并注销数据。
有谁知道如何让它发挥作用?即使我在输入字段中写了一些东西,我也会收到错误或者我的ajax请求搜索查询结束为空。
import React, {Component} from 'react'
import { Container, Header, Search } from 'semantic-ui-react'
import './jumbotron.css'
class Jumbotron extends Component {
constructor(props) {
super(props)
this.state = {value: ''}
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) {
this.setState({value: event.target.value})
}
handleSubmit(event) {
const food = this.state.value;
const url = `https://api.edamam.com/search?q=${food}&app_id=${appId}&app_key=${apiKey}`
fetch(url).then( response => response.json())
.then( data => console.log(data))
event.preventDefault();
}
render() {
return (
<Container text>
<Header>
Nutrion
</Header>
<form onSubmit={this.handleSubmit}>
<Search
onChange={this.handleChange}
type='text'
value={this.state.value}
size='big'
placeholder=' ...'/>
<input type="submit" value="Submit" />
</form>
</Container>
)
}
}
export default Jumbotron
&#13;
答案 0 :(得分:4)
此处所需的更改是: -
而不是
<Search
onChange={this.handleChange}
type='text'
value={this.state.value} // THIS CAUSING CONFICT WITH INTERNAL STATE?
size='big'
placeholder='What would you like to eat today? ...'/>
应该是
<Search
onSearchChange={this.handleChange}
type='text'
value={this.state.value} // THIS CAUSING CONFICT WITH INTERNAL STATE?
size='big'
placeholder='What would you like to eat today? ...'/>
基本上 onChange 应替换为 onSearchChange