VueJs3 将数据从一个组件发送到另一个组件

Posted

技术标签:

【中文标题】VueJs3 将数据从一个组件发送到另一个组件【英文标题】:VueJs3 sending data from one component to another 【发布时间】:2021-05-02 06:50:37 【问题描述】:

我目前正在做一个 VueJs3 项目。我已经编写了一个登录系统,它工作得很好。我现在想在主页上有一个 div,告诉用户他们使用哪个帐户登录。

"您登录为:" + 用户名

因此,我必须将用户名从登录组件发送到主组件。有人可以帮我吗?我尝试了很多方法,但似乎都没有。

顺便说一句。组件都保存在 components 文件夹中

这是我的代码:

home.vue

    <div class="home">
        <h1>You are logged in as: currentusername</h1>
        <Maschinen/>

    </div>
</template>

<script>
    import Maschinen from '@/components/Maschinen.vue'
    import axios from 'axios'

    export default 
        name: 'Home',
        components: 
            Maschinen
        ,
        data() 
            return 
                currentusername: null,
            
        ,
        async created() 
            const response = await axios.get('http://localhost:8080/user/hetwinuser', 
                headers: 
                    Authorization: 'Bearer ' + localStorage.getItem('token')
                
            );
            this.currentusername= (response.data.username);
        
    
</script>



login.vue:

<template>
    <form @submit.prevent="handleSubmit">
        <h1>Login</h1>
        <!--username + pw input for login-->
        <div class="form-group">
            <label id="username">Username:</label>
            <input id="usernameinput" type="text" class="form-control" v-model="username" placeholder="Username">
        </div>
        <div>
            <label id="password">Password:</label>
            <input id="passwordinput" type="password" class="form-control" v-model="password" placeholder="Password">
        </div>
        <!--enter buttons-->
        <button class="enter">Enter</button>
        <router-link to="/register" id="goToRegister" tag="button">Register</router-link>
    </form>
</template>

<script>
    import axios from 'axios';

    export default 
        name: "Login",
        data: () => 
            return 
                username: '',
                password: ''
            
        ,
        methods: 
            async handleSubmit() //executed when enter button is pressed
                const data = 
                    username: this.username,
                    password: this.password
                ;
                axios.post('http://localhost:8080/authenticate', data) //post the username + pw and will receive the token in exchange
                    .then(
                        res => 
                            localStorage.setItem('token', res.data.jwt);
                            localStorage.setItem('currentusername', this.username);
                            //console.log(localStorage.getItem('token'));
                        
                    ).catch(
                    err => 
                        console.log(err)
                    
                );

            
        ,

    
</script>```

【问题讨论】:

请检查这个答案***.com/a/64019074/8172857 离题,但你可以使用“await”而不是“.then”。 我很难理解这篇文章。你能澄清一下我应该怎么做吗?非常感谢 【参考方案1】:

用户名和密码

在 store -> state.js 下定义它。然后在你想要的地方

将其用作“this.$store.state.username”

【讨论】:

以上是关于VueJs3 将数据从一个组件发送到另一个组件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用共享服务将数据从一个组件发送到另一个组件[重复]

无法将数据从一个模块组件发送到另一个模块组件

Angular 8:将表单数据作为服务发送到另一个组件

在 React 中将状态数据从一个组件传递到另一个组件

将 React.FunctionComponent<React.SVGProps<SVGSVGElement>> 作为道具发送到另一个组件

将数组传递给组件