1
我開始學習React,但我有一些困難找出這個錯誤。 我有一個父組件天氣和一個子組件WeatherForm。從父組件爲子組件設置一個屬性。子組件是一個表單,目標是從輸入中獲取文本,當用戶單擊提交按鈕時,輸入文本被傳遞給父組件的一個函數,該文件顯示一個警報。ReactJs:從子組件到父組件的數據
這是父組件:
const WeatherForm = require('WeatherForm');
const WeatherMessage = require('WeatherMessage');
class Weather extends Component {
constructor(props) {
super(props);
this.state = {
location: ''
};
this.handleSearch = this.handleSearch.bind(this);
}
render() {
return (
<div>
<h3>Weather component</h3>
<WeatherForm onSearch={this.handleSearch} />
<WeatherMessage />
</div >
);
}
handleSearch(value) {
alert(value);
}
}
這是子組件:
class WeatherForm extends Component {
constructor(props) {
super(props);
this.onFormSubmit = this.onFormSubmit.bind(this);
}
render() {
return (
<div>
<form onSubmit={this.onFormSubmit}>
<input type="text" placeholder="Enter a city name" ref="location" onChange={this.onFormSubmit}/>
<button>Get weather</button>
</form>
</div>
);
}
onFormSubmit(e) {
e.preventDefault();
let location = this.refs.location;
if (location.value && location.value.length > 0) {
this.refs.location.value = '';
props.onSearch(location.value);
}
}
}
但是當我點擊提交按鈕,我收到此錯誤:
props.onSearch is not a function
我在哪裏犯錯?
我也使用了父組件天氣在路由中的另一個組件這樣<Route exact path="/" component={Weather} />
感謝所有
感謝你的傢伙。你讓我也意識到,我正在使用** OnSearch **與大寫O而不是真正的名字** onSearch **。 – Alee