Javascript 替换韩元';获取时不能处理字符串,但硬编码时会
我正在尝试使用将“8888888888”转换为“(888)888-8888”的功能格式化电话号码: 当我的json是硬编码的时候,它就可以工作了,但是当它从服务器获取时,没有任何变化,也没有错误 我尝试了控制台日志记录“typeof”,但在这两种情况下,它们都以字符串的形式返回 我尝试在组件装载后将状态设置为更新,如下所示:Javascript 替换韩元';获取时不能处理字符串,但硬编码时会,javascript,replace,react-native,Javascript,Replace,React Native,我正在尝试使用将“8888888888”转换为“(888)888-8888”的功能格式化电话号码: 当我的json是硬编码的时候,它就可以工作了,但是当它从服务器获取时,没有任何变化,也没有错误 我尝试了控制台日志记录“typeof”,但在这两种情况下,它们都以字符串的形式返回 我尝试在组件装载后将状态设置为更新,如下所示: componentDidMount (){ var formatPhone = phoneFormat(this.props.profile.phone) this
componentDidMount (){
var formatPhone = phoneFormat(this.props.profile.phone)
this.setState({phone: formatPhone})
},
还尝试了直接内联调用函数
提取功能:
fetchProfile() {
fetch(PROFILE_API)
.then((response) => {
return response.json();
})
.then((json) => {
console.log(JSON.stringify(json))
this.setState({
profile: json
});
})
.catch((error) => {
this.setState({
loading: 3
});
});
},
然后我将状态作为道具传递到组件视图。我将执行以下操作:
祝你好运。由于代码不是完整的版本,我能想到的是: 您的状态“phone”实际上并没有直接绑定到状态“profile”,因为您在componentDidMount()中设置了“phone”值,并且它只运行一次。运行componentDidMount()后,调用fetch()时,设置状态“profile”不会触发状态“phone”的更改
如果是这样的话,我的建议是去掉“phone”,在呈现布局时只需调用phoneFormat(this.state.profile.phone),正如这里提到的()这是因为我的同事在数据库中的数字意外地是9个字符而不是10个字符。Oops.能否显示服务器调用和成功函数?从服务器返回的JSON是什么样子的?值得使用断点甚至简单的console.log检查代码是否实际到达了该方法调用。我希望如果你没有得到错误,这意味着代码甚至没有被执行,代码被执行了。我在替换前后为“phone”功能添加了控制台日志。在这两种情况下,手机启动相同。第二个日志显示获取的版本没有更改,硬编码版本的更改是正确的。数字的JSON是“phone”:“888888888”,引号中是“phone”。我内联尝试过:
,但仍然没有看到更改。可能要添加错误处理,确保您的读取函数获得有效数据:)。@KoebmandSTO您能为我得到的函数演示一个示例吗?我很想知道在那种情况下如何操作。检查伪代码中的长度:readPhoneNumber():if(readNumber.length()!=10)raiseError“这不是电话号码”否则返回readNumber。如果read函数也用于读取其他内容,您可能希望在使用数字的情况下对此进行检查,也可能有人输入字母等。您可能还希望检查所有的是数字。
fetchProfile() {
fetch(PROFILE_API)
.then((response) => {
return response.json();
})
.then((json) => {
console.log(JSON.stringify(json))
this.setState({
profile: json
});
})
.catch((error) => {
this.setState({
loading: 3
});
});
},