reactjs - 访问类外的状态 - Reactnative - this.setState 不是函数
问题描述
我正在使用类外部的自定义浮动文本标签,我想在其中设置状态。请问我该怎么做
当我单击按钮时,我有两个浮动文本字段,我想将状态设置为输入文本字段中输入的值。
错误是得到是
this.setState 不是函数
const TextfieldWithFloatingLabel_Card = MKTextField.textfieldWithFloatingLabel()
.withPlaceholder(strings.nineDigitCardNumber)
.withStyle(styles.textfieldWithFloatingLabel)
.withTextInputStyle({ flex: 1 })
.withFloatingLabelFont({
fontSize: 12,
fontWeight: '200',
color: colors.primaryColor
})
.withKeyboardType('numeric')
.withOnEndEditing(e => {
this.setState({ cardDigits: e.nativeEvent.text });
console.log('EndEditing', e.nativeEvent.text);
})
.build();
const TextfieldWithFloatingLabel_NationalId = MKTextField.textfieldWithFloatingLabel()
.withPlaceholder(strings.nationalIdNumber)
.withStyle(styles.textfieldWithFloatingLabel)
.withTextInputStyle({ flex: 1 })
.withFloatingLabelFont({
fontSize: 12,
fontWeight: '200',
color: colors.primaryColor
})
.withKeyboardType('numeric')
.withOnEndEditing(e => {
this.setState({ nationalIdNumber: e.nativeEvent.text });
console.log('EndEditing', e.nativeEvent.text);
})
.build();
class Login extends React.Component {
constructor(props) {
super(props);
this.state = {
cardDigits: '',
IdNumber: ''
};
}
render() {
//console.log('rovers - ' + JSON.stringify(this.state.rovers))
return (
<ScrollView style={styles.mainContainer}>
<TextfieldWithFloatingLabel_Card ref="tiNumber" />
<TextfieldWithFloatingLabel_NationalId ref="tiNationalId" />
<TouchableOpacity
title="Transactions"
style={{
height: 60,
backgroundColor: '#673fb4',
marginTop: 20,
alignItems: 'center',
justifyContent: 'center'
}}
onPress={() => {
consoleLog(
'cardnum : ' +
this.state.cardDigits +
' national id - ' +
this.state.IdNumber
);
}}
>
<CommonText style={{ color: 'white' }}>
{strings.signInLower}
</CommonText>
</TouchableOpacity>
</ScrollView>
);
}
}
谢谢R
解决方案
改变
TextfieldWithFloatingLabel_Card
对于函数而不是变量,以及在组件中调用 TextfieldWithFloatingLabel_Card 的任何位置,都将其作为参数传递给它,以便在执行 setState 时它会起作用
我会给你提示如何做
测试.js
const test = this = {
this.setState({test: “working”});
}
export = test();
App.js 组件
import { test } from “./Test”;
callTest = () => {
test(this);
}
render(){
return(
<div onClick={this.callTest}>
</div>
)
}
所以这里的重点是您需要将组件 this 传递给导入的常规函数,以便您可以设置组件的状态。
您所做的是旧方法。我建议您使用组件处理事件处理函数。
如果有任何拼写错误,请执行我,因为我正在手机上回答
推荐阅读
- python - 尝试使用 python 的 StreamingHttpResponse 创建和下载包含大型数据集的 csv 文件时,如何防止出现 500 CORS 错误?
- javascript - 如何使用正则表达式在字符串的倒数第二个索引中插入特定字符
- reporting-services - 使用 Visual Studio 2019 进行 ssrs 数据集分组的问题
- sql-server - 更改后通过证书为存储过程添加签名
- scala - 在 Spark Dataframe 中的窗口上创建唯一的组 ID
- css - Vue 样式组件
- css - 使用 Material-UI 在卡片中并排放置物品
- python - 深度学习模型训练非常慢的 Jetson Nano
- python - 使用 django 配置用户权限
- ios - Apple 登录电子邮件弹出窗口