Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 父元素和子元素之间的间接通信问题_Javascript_Reactjs_React Native_Frontend_Dom Events - Fatal编程技术网

Javascript 父元素和子元素之间的间接通信问题

Javascript 父元素和子元素之间的间接通信问题,javascript,reactjs,react-native,frontend,dom-events,Javascript,Reactjs,React Native,Frontend,Dom Events,我在英语中有一个间接交流的问题 我有一个父组件,每个类一个组件。我有一个子组件,它是一个功能组件 家长: constructor(props) { super(props); this.state = { search: '', }; } getInfoSearch(userSearch) { this.setState({ search: userSearch }) } render(){ return( <SearchHeader pla

我在英语中有一个间接交流的问题

我有一个父组件,每个类一个组件。我有一个子组件,它是一个功能组件

家长:

constructor(props) {
  super(props);

  this.state = {
    search: '',
  };
 }

getInfoSearch(userSearch) {
 this.setState({
   search: userSearch
 })
}

render(){
  return(
   <SearchHeader placeholder={'Buscar procedimento'} getValueUserSearch={this.getInfoSearch}/>
  )
}
构造函数(道具){
超级(道具);
此.state={
搜索:“”,
};
}
getInfoSearch(用户搜索){
这是我的国家({
搜索:用户搜索
})
}
render(){
返回(
)
}
儿童:

import React, {useState} from 'react';
import {View, TextInput} from 'react-native';

const SearchHeader = props => {
  const [search, setSearch] = useState('');

  const {placeholder, getValueUserSearch} = props;

  const handleSearch = (search) => {
    console.log(this);
    setSearch(search);
    getValueUserSearch(search);
  };

  return (
    <View>
      <TextInput placeholder={placeholder || 'Buscar'} onChangeText={handleSearch}/>
    </View>
  );
};

export default SearchHeader;
import React,{useState}来自“React”;
从“react native”导入{View,TextInput};
const SearchHeader=props=>{
const[search,setSearch]=useState(“”);
常量{占位符,getValueUserSearch}=props;
const handleSearch=(搜索)=>{
console.log(this);
设置搜索(搜索);
getValueUserSearch(搜索);
};
返回(
);
};
导出默认搜索头;
但当我在InputText中键入文本时,会发生错误。声明:

“我无法应用未定义的setState函数”


你知道我怎样才能解决这个问题吗?因为我想更改父元素中的“搜索”状态。

这是因为您没有将参数传递给
handleSearch
函数,它应该是:

 onChangeText={(event) => handleSearch(event.target.value}

错误可能是由于
函数中的.setState
行引起的

尝试使用
箭头函数
或在
构造函数中执行显式绑定,如下所示

constructor(props) {
  ...
  this.getInfoSearch = this.getInfoSearch.bind(this);
}
(或)


查看更多详细信息。

使用箭头功能进行
getInfoSearch
。否则,在
构造函数
值处绑定
内部
getInfoSearch
方法可能不是您所期望的。尝试在
getInfoSearch
中记录
this
并查看其值。
getInfoSearch = (userSearch) => {
  this.setState({ search: userSearch });
}