Javascript React-redux:此.setState不工作
我正在做一个用react redux编写的项目。我想在组件中使用组件状态,而不是全局状态。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
我的组件代码是:
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所以我那么我想主要的问题是关于绑定的事情。关于绑定的参考:请提供解释请提供解释