javascript - 访问道具时未获得正确的数据
问题描述
在我的 App.js 中,我有以下内容:
class App extends React.Component{
constructor(props){
super(props);
this.state = {
authAccount: {
email: "",
passcode: ""
},
};
}
render(){
return(
<Router>
<Switch>
<Route path="/somelink/abc" exact component={SomeClass} authAccount={this.state.authAccount} />
</Switch>
</Router>
);
}
}
export default App;
我有另一个 React 组件:
class SomeClass extends React.Component{
constructor(props){
super(props);
this.state = {
item:[
{
name: "",
material: "",
},
],
};
}
someMethod = () =>{
console.log(this.props.authAccount.email);
//I am always getting the object {email: 'someemail@email.com', passcode: 'somepassword123'}
//even though I only want the email value, which is what I am accessing.
}
}
export default SomeClass;
App.js 是父类。
我总是得到对象 {email: 'someemail@email.com', passcode: 'somepassword123'} 即使我只想要电子邮件值,这是我试图在 someClass 组件中的 someMethod 中访问的值。
解决方案
在您的第一个组件中,只需正确传递状态,而不是组件使用 Router 包附带的 render 方法。
<Router>
<Switch>
<Route
path="/somelink/abc"
exact
render={(props)=>(
<SomeClass {...props} authAccount= {this.state.authAccount}/>
)
}
/>
</Switch>
</Router>
推荐阅读
- reactjs - onBlur 如何在 React 上工作?
- c - Linux 是否为僵尸进程保留内核堆栈?
- excel - VBA 范围内的字符串函数
- javascript - 如何修复 webdriverio 错误:TypeError:无法读取 null 的属性“then”?
- python - 带有 chromedriver 的 Python Selenium 为多个 Url 等待几秒钟
- maven - 如何将 flink 快照 jar 部署到私有 maven 存储库?
- reactjs - 为什么 Styled- 组件在反应中不起作用
- css - 为什么背景颜色在 Angular 中无法正确显示
- mysql - 在MYSQL中,查询存储在5个仓库中每个产品的SUM数量> 100的产品名称
- qt - 带有 QT 的 HTTP 请求错误,但带有 CURL 的请求良好