gpt4 book ai didi

javascript - React-redux:this.setState 不起作用

转载 作者:行者123 更新时间:2023-11-28 17:51:13 24 4
gpt4 key购买 nike

我正在开发一个用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>
);
}
}

inputHandler 函数由子组件调用。在此内部 this.setState({searchChannel: value}) 给我错误 this.setState 不是一个函数。尽管我在构造函数中为 searchChannel 分配了一个测试值,并且当我在渲染中控制台它的值时它正在工作。

最佳答案

我的修正是这样的

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>
);
}
}
<小时/>

原因

如果您传递实例方法(指的是特定上下文,又名访问this),您将丢失其原始上下文,因为它取决于调用者。

更多信息请点击:How to access the correct `this` inside a callback?

例如:inputHandler={this.inputHandler}

要保留this,您可以:

关于javascript - React-redux:this.setState 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45482472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com