javascript - 如何在 Reactjs 中的功能组件之间传递值?
问题描述
SignInOutlookAccount
我试图在两个功能组件( & )之间传递 isAuthenticated 值,SignInOutlookButton
但我无法获得它的值。
我怎样才能把isAuthenticated
vaule 从SignInOutlookAccount.jsx
到SignInOutlookButton.jsx
?
登录OutlookAccount.jsx
export const getUserProfile = async (props) => {
console.log("im inside getUserProfile");
try {
var accessToken = await userAgentApplication.acquireTokenSilent({
scopes: config.scopes
});
console.log("im inside tryyyyyy");
if (accessToken) {
var user = await getUserDetails(accessToken);
props = {
isAuthenticated: true,
user: {
displayName: user.displayName,
email: user.mail || user.userPrincipalName,
accessToken: user.accessToken
},
error: null
};
}
} catch (err) {
var error = {};
if (typeof err === "string") {
var errParts = err.split("|");
error =
errParts.length > 1
? { message: errParts[1], debug: errParts[0] }
: { message: err };
} else {
error = {
message: err.message,
debug: JSON.stringify(err)
};
}
props = {
isAuthenticated: false,
user: {},
error: error
};
}
登录OutlookButton.jsx
export const SignInOutlookButton = ({props}) => {
return <Button text={isAuthenticated ? 'Sign In' : 'Sign Out'} startIcon={<Mail />} onClick={()=> login(props)} />;
};
CustomComponents.jsx
export const CustomComponents = props => {
return (<SignInOutlookButton/>);
};
解决方案
在你的SignInOutlookButton
你正在解构props
以获得一个名为props
. 不要那样做。这将寻找一个名为props
. 您很可能不会像这样调用组件:<SignInOutlookButton props={...myProps} />
如果是,请不要。
将函数声明更改为正确后:
export const SignInOutlookButton = (props) => {
你可以isAuthenticated
通过 props 访问:text={props.isAuthenticated
.
推荐阅读
- c++ - 在头文件中使用 char * 不起作用
- python - 如何在 pandas 中正确使用具有数值特征的稀疏向量特征来训练 sklearn 模型?
- flutter - 不能无条件访问属性“长度”,因为接收者可以为“空”。尝试使访问有条件(使用'?.')或添加
- c# - 如何使用DOCSIS和c#将txt转换为二进制文件
- javascript - 通过 html css 或 vanilla js 添加带有多选项目的可编辑下拉列表
- java - 我想在我的 sql 数据库中添加一个搜索,通过 id 获取名称的函数会产生错误
- javascript - NextJS - 组件中的静态 json 数据?
- javascript - 如何在javascript中正确满足条件“如果”
- wordpress-theming - 如何在 PHP 和 mysql 代码上使用主题
- android - Jetpack Compose 中的长按手势