为什么 setup() 不起作用 "Cannot read property 'username' of undefined "

why setup() doesnt work "Cannot read property 'username' of undefined "

当我在它有效的方法中使用 toLogin 时,但在设置和 return(在此代码中 - test)中使用时,我得到错误 Cannot读取未定义的 属性 'username' 不起作用 ,为什么?

export default {
  name: "Login",
  setup() {
    const username = ref("");
    const password = ref("");
    const router = useRouter();


    
    const test = async () => {
      console.log(this.username.value)
    }
    return {
      username,
      password,
      router,
      test
    };
  },
  methods: {
    async toLogin() {
      const rep = await axios.post("login", {
        username: this.username,
        password: this.password,
      });
      console.log(rep)
      //await this.router.push("/successlogin");
    },
  },
};

您不需要 this。相反,只需使用 console.log(username.value)username 已在 test 函数使用的范围内捕获。

这里的文档 https://v3.vuejs.org/guide/composition-api-introduction.html#setup-component-option 包含这个例子:

setup (props) {
  const repositories = ref([])
  const getUserRepositories = async () => {
    repositories.value = await fetchUserRepositories(props.user)
  }

  return {
    repositories,
    getUserRepositories
  }
}