iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
自我挑戰組

模仿知名網站的外觀系列 第 19

【Day19】模仿知名網站的外觀 X(6) 顯示登錄視窗與後端設定

  • 分享至 

  • xImage
  •  

一進入網頁就馬上要求登入或註冊,不是我們想要的,真正的X應該也沒有強制登入才能觀看內容。

我們修改useRegisterModal.tsx,把isOpen改成false。

import { create } from "zustand";

interface RegisterModalStore{
    isOpen: boolean;
    onOpen: () => void;
    onClose: () => void;
}

const useRegisterModal = create<RegisterModalStore>((set) => ({
    isOpen: false,
    onOpen: () => set({isOpen: true}),
    onClose: () => set({isOpen: false}),
}));

export default useRegisterModal;

發表文章的時候,需要帳號是很合理的,這個時候要求登入應該很正常,我們修改SidebarTweetButton.tsx,按下後會顯示登入視窗。

'use client'

import { useRouter } from "next/router"
import { FaFeather } from "react-icons/fa" 
import { useCallback } from "react"
import useLoginModal from "@/Hooks/useLoginModal"

const SidebarTweetButton = () => {
    const router = useRouter();
    const loginModal = useLoginModal();

    const onClick = useCallback(() => {
        router.push('/');
        loginModal.onOpen();
    }, [loginModal])

  return (
    <div onClick={onClick}>
        <div className="mt-6 lg:hidden rounded-full h-14 w-14 p-4 flex items-center justify-center bg-sky-500 hover:bg-opacity-80 transition cursor-pointer">
            <FaFeather size={24} color="white" />
        </div>
        <div className="mt-6 hidden lg:block px-4 py-2 rounded-full bg-sky-500 hover:bg-opacity-90 cursor-pointer transition">
            <p className="hidden lg:block text-center font-semibold text-white text-[20px]">
                Tweet
            </p>
        </div>
    </div>
  )
}

export default SidebarTweetButton

現在登入視窗要按Tweet才會出現了。

我們現在要開始處理後端了,首先安裝Prisma。

在終端機輸入:

npm i -d prisma

完成後輸入:

npx prisma init

產生資料庫連接設定檔案。

我們打開prisma/schema.prisma,因為我們要使用MongoDB,對這個檔案做一些修改。

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mongodb"
  url      = env("DATABASE_URL")
}

接下來我們去MongoDB官網點免費試用,然後註冊一個帳號,過程很簡單,完成後到信箱收驗證信。

MongoDB:应用程序数据平台

驗證完成後,登入帳號,我們會看到畫面上有個【Build a Database】的深綠色按鈕,如果沒有的話,在側邊欄找到Database按下後,在畫面上找到Create按鈕。

接下來,畫面上有【M10】、【SERVERLESS】、【M0】三種選項,我們選擇最右邊免費的【M0】。

Provider選擇中間的【Google Cloud】,Region選【Taiwan】。

最後按下Create,進入下一個畫面。

這個畫面有一個很明顯的區塊,填寫完Username和Password,然後按下Create User。

接著來到下一個區塊,有個【Add My Current IP Address】,按下去之後點擊底部的【Finish and Close】。

未來登入的時候,如果畫面上有【My Current IP Address】的按鈕要按,因為大部分的人不是使用固定IP,當IP變化時就無法連接到MongoDB。


上一篇
【Day18】模仿知名網站的外觀 X(5) 註冊表單
下一篇
【Day20】模仿知名網站的外觀 X(7) Prisma連接MongoDB資料庫
系列文
模仿知名網站的外觀30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言