无法将道具中的功能传递给组件 |反应
Unable to pass function in props to a Component | React
我正在尝试将函数 onSearchChangeEvent() 从我的 App.js 传递到 Searchbox 组件作为函数,但我收到错误消息
Expected onChange
listener to be a function, instead got a value of
object
type.
我在 Whosebug 上查找了相同错误的不同答案,但我无法解决此问题。
App.js : 包含函数 onSearchChangeEvent() 我正在尝试传递给 <搜索框 /> 组件。
import React, {Component} from 'react';
import Cardlist from './Cardlist';
import Searchbox from './Searchbox';
import {robots} from './robots';
class App extends Component {
constructor () {
super()
this.state = {
robots : robots,
searchfield : ''
}
}
onSearchChangeEvent = () => {
console.log("Something Happened");
}
render () {
return (
<div className='tc'>
<h1>Robo Friends</h1>
<Searchbox searchChange={() => this.onSearchChangeEvent}/>
<Cardlist robots={this.state.robots} />
</div>
);
}
}
export default App;
Searchbox.js
import React from 'react';
const Searchbox = (searchField, searchChange) => {
return (
<div className='pa2'>
<input
className='pa3 ba b--green bg-lightest-blue'
type='search'
placeholder='Search Robots'
onChange={searchChange}
/>
</div>
);
}
export default Searchbox;
错误:首先我得到警告,当事件被触发时我得到错误
您没有正确访问 SearchBox
组件中的道具。您需要解构它们而不是将它们定义为参数
const Searchbox = ({ searchField, searchChange }) => {
return (
<div className='pa2'>
<input
className='pa3 ba b--green bg-lightest-blue'
type='search'
placeholder='Search Robots'
onChange={searchChange}
/>
</div>
);
}
并像
一样传递下去
<Searchbox searchChange={this.onSearchChangeEvent}/>
或
<Searchbox searchChange={() => this.onSearchChangeEvent()}/>
尽管您必须更喜欢 <Searchbox searchChange={this.onSearchChangeEvent}/>
,因为您在定义 onSearchChangeEvent
函数时已经在使用箭头函数
我正在尝试将函数 onSearchChangeEvent() 从我的 App.js 传递到 Searchbox 组件作为函数,但我收到错误消息
Expected
onChange
listener to be a function, instead got a value ofobject
type.
我在 Whosebug 上查找了相同错误的不同答案,但我无法解决此问题。
App.js : 包含函数 onSearchChangeEvent() 我正在尝试传递给 <搜索框 /> 组件。
import React, {Component} from 'react';
import Cardlist from './Cardlist';
import Searchbox from './Searchbox';
import {robots} from './robots';
class App extends Component {
constructor () {
super()
this.state = {
robots : robots,
searchfield : ''
}
}
onSearchChangeEvent = () => {
console.log("Something Happened");
}
render () {
return (
<div className='tc'>
<h1>Robo Friends</h1>
<Searchbox searchChange={() => this.onSearchChangeEvent}/>
<Cardlist robots={this.state.robots} />
</div>
);
}
}
export default App;
Searchbox.js
import React from 'react';
const Searchbox = (searchField, searchChange) => {
return (
<div className='pa2'>
<input
className='pa3 ba b--green bg-lightest-blue'
type='search'
placeholder='Search Robots'
onChange={searchChange}
/>
</div>
);
}
export default Searchbox;
错误:首先我得到警告,当事件被触发时我得到错误
您没有正确访问 SearchBox
组件中的道具。您需要解构它们而不是将它们定义为参数
const Searchbox = ({ searchField, searchChange }) => {
return (
<div className='pa2'>
<input
className='pa3 ba b--green bg-lightest-blue'
type='search'
placeholder='Search Robots'
onChange={searchChange}
/>
</div>
);
}
并像
一样传递下去<Searchbox searchChange={this.onSearchChangeEvent}/>
或
<Searchbox searchChange={() => this.onSearchChangeEvent()}/>
尽管您必须更喜欢 <Searchbox searchChange={this.onSearchChangeEvent}/>
,因为您在定义 onSearchChangeEvent
函数时已经在使用箭头函数