反應JS代碼:
我想要src/app.jsx做的export default App,當REACT_APP_AUTH_SERVER變數.env不存在或有其他價值,做export default withAuthenticator(App)當REACT_APP_AUTH_SERVER變數.env確實存在,并具有價值aws-cognito:
src/app.jsx:
import React, { Component } from 'react';
import SecuredGate from './SecuredGate/SecuredGate';
import { withAuthenticator } from '@aws-amplify/ui-react'
import './App.css';
import '../fontStyles.css';
class App extends Component {
render() {
return (
<div>
<SecuredGate />
</div>
);
}
}
const Result = () => {
if (process.env.REACT_APP_AUTH_SERVER && process.env.REACT_APP_AUTH_SERVER === "aws-cognito"){
return withAuthenticator(App);
}
return App;
}
// export default App;
// export default withAuthenticator(App)
export default Result;
但是,這是行不通的。
如果我做:
export default App;
// export default withAuthenticator(App)
,它有效,如果我這樣做:
// export default App;
export default withAuthenticator(App)
它也能作業。
那么我錯過了什么?
uj5u.com熱心網友回復:
我認為問題在于Result組件回傳一個組件而不是一個元素。要更好地理解這一點,請查看App使用<App />. 它在其主體中運行代碼并回傳一些標記。但是如果你呼叫<Result />. 它將在其塊中運行代碼并回傳另一個組件(一個函式)。因此,要解決此問題,您可以嘗試:
const Result = (process.env.REACT_APP_AUTH_SERVER && process.env.REACT_APP_AUTH_SERVER === "aws-cognito")
? withAuthenticator(App)
: App;
}
export default Result;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/396972.html
標籤:javascript 反应 aws-放大
