Javascript React-redux:此.setState不工作

Javascript React-redux:此.setState不工作,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我正在做一个用react redux编写的项目。我想在组件中使用组件状态,而不是全局状态。 我的组件代码是: import React from 'react'; import Input from 'src/containers/Input'; type StateType = { searchChannel: string }; export default class AddChannelComponent extends React.Component < void, P

我正在做一个用react redux编写的项目。我想在组件中使用组件状态,而不是全局状态。
我的组件代码是:

import React from 'react';
import Input from 'src/containers/Input';
type StateType = {
     searchChannel: string
};
export default class AddChannelComponent extends React.Component < void,
PropsType,
void > {
     state : StateType;

     constructor(props : PropsType) {
          super(props);
          this.state = {
               searchChannel: 'test'
          };
     }

     inputHandler(value) {
          console.log("text  isdddd", value);
          this.setState({searchChannel: value});  <==Error Occur Here
     }
     render() {
          return (
               <div >
                    <p>Type your input</p>
                    <div>
                         <Input inputHandler={this.inputHandler} placeholder="Search all public channels..."/>
                    </div>
               </div>
          );
     }
} 
从“React”导入React;
从“src/containers/Input”导入输入;
类型StateType={
搜索频道:字符串
};
导出默认类AddChannelComponent扩展React.Component{
状态:StateType;
构造器(道具:PropsType){
超级(道具);
此.state={
searchChannel:“测试”
};
}
inputHandler(值){
日志(“文本ISDDD”,值);

this.setState({searchChannel:value});我的更正如下

import React from 'react';
import Input from 'src/containers/Input';

export default class AddChannelComponent extends React.Component{

     constructor(props) {
          super(props);
          this.state = {
               searchChannel: 'test'
          };
     }

     inputHandler = (value) => {
          console.log("text is dddd", value);
          this.setState({searchChannel: value});
     }
     render() {
          return (
               <div >
                    <p>Type your input</p>
                    <div>
                         <Input inputHandler={this.inputHandler} placeholder="Search all public channels..."/>
                    </div>
               </div>
          );
     }
} 
从“React”导入React;
从“src/containers/Input”导入输入;
导出默认类AddChannelComponent扩展React.Component{
建造师(道具){
超级(道具);
此.state={
searchChannel:“测试”
};
}
inputHandler=(值)=>{
日志(“文本为dddd”,值);
this.setState({searchChannel:value});
}
render(){
返回(
键入您的输入

); } }

理由 如果传递一个
实例方法
(它引用一个特定的上下文aka,访问
),您将丢失其原始上下文,因为它取决于调用方

更多信息请点击此处:

例如:
inputHandler={this.inputHandler}

要保留
,您可以:

  • 使用
    inputHandler={this.inputHandler.bind(this)}
  • 使用
    inputHandler={(…args)=>this.inputHandler(…args)}
  • 使用
    inputhandler=()=>{}

    • 我的更正如下

      import React from 'react';
      import Input from 'src/containers/Input';
      
      export default class AddChannelComponent extends React.Component{
      
           constructor(props) {
                super(props);
                this.state = {
                     searchChannel: 'test'
                };
           }
      
           inputHandler = (value) => {
                console.log("text is dddd", value);
                this.setState({searchChannel: value});
           }
           render() {
                return (
                     <div >
                          <p>Type your input</p>
                          <div>
                               <Input inputHandler={this.inputHandler} placeholder="Search all public channels..."/>
                          </div>
                     </div>
                );
           }
      } 
      
      从“React”导入React;
      从“src/containers/Input”导入输入;
      导出默认类AddChannelComponent扩展React.Component{
      建造师(道具){
      超级(道具);
      此.state={
      searchChannel:“测试”
      };
      }
      inputHandler=(值)=>{
      日志(“文本为dddd”,值);
      this.setState({searchChannel:value});
      }
      render(){
      返回(
      键入您的输入

      ); } }

      理由 如果传递一个
      实例方法
      (它引用一个特定的上下文aka,访问
      ),您将丢失其原始上下文,因为它取决于调用方

      更多信息请点击此处:

      例如:
      inputHandler={this.inputHandler}

      要保留
      ,您可以:

      • 使用
        inputHandler={this.inputHandler.bind(this)}
      • 使用
        inputHandler={(…args)=>this.inputHandler(…args)}
      • 使用
        inputhandler=()=>{}
      从“React”导入React;
      从“src/containers/Input”导入输入;
      导出默认类AddChannelComponent扩展React.Component{
      建造师(道具){
      超级(道具);
      此.state={
      searchChannel:“测试”
      };
      }
      inputHandler=(值)=>{
      日志(“文本为dddd”,值);
      this.setState({searchChannel:value});
      }
      render(){
      返回(
      键入您的输入

      ); } }
      从“React”导入React;
      从“src/containers/Input”导入输入;
      导出默认类AddChannelComponent扩展React.Component{
      建造师(道具){
      超级(道具);
      此.state={
      searchChannel:“测试”
      };
      }
      inputHandler=(值)=>{
      日志(“文本为dddd”,值);
      this.setState({searchChannel:value});
      }
      render(){
      返回(
      键入您的输入

      ); } }
      TL的可能副本;DR:您需要使用上述可接受答案中建议的任何方法将
      inputHandler
      绑定到您的组件TL的可能副本;DR:您需要使用上述可接受答案中建议的任何方法将
      inputHandler
      绑定到您的组件。这对我有效。但您可以吗告诉您发生这种情况的原因。转换为成员属性和箭头函数,保留上下文,因此绑定到实例。@Kelltontech哦,您实际上不需要声明状态type@HanaAlaydrus这是我前辈的项目,它运行正常。@Keltontech所以它以前运行过?那么我想主要的问题是绑定ing thing.reference about binding:这对我很有效。但是你能告诉我为什么会发生这种情况吗?转换为成员属性和箭头函数,保留上下文,因此绑定到实例。@Kelltontech哦,实际上你不需要声明状态type@HanaAlaydrus这是我的前辈做的项目,工作正常。@Kelltontech所以我那么我想主要的问题是关于绑定的事情。关于绑定的参考:请提供解释请提供解释