【实战】从零开始打造一个低代码平台——9、组件编辑(中)


前言

此前我们已经支持了拖放组件,但它们仍然无法被更改。通过全局状态管理,现在我们可以实现组件的编辑功能。在本章中,我们将在右侧面板中显示组件的属性,并允许用户更改组件的位置、外观等。

1. 更新组件

在上一章中,我们实现了一个接口addWidget,用于向WidgetStore中添加一个组件。下一步,我们将实现另一个用于更新组件的接口。

复制
import {
   
    create } from 'zustand';
import {
   
    immer } from 'zustand/middleware/immer';
import {
   
    Scr } from '../types/widget';
import {
   
    createScr } from '../utils/widget';
import {
   
    Widget } from '../types/widget';

export interface WidgetState {
   
   
    scrs: Scr[];
    currScrId?: string;
    currWidgetId?: string;
}

export interface WidgetActions {
   
   
    init: () => void;
    addScr: (scr: Scr) => void;
    removeScr: (scrId: string) => void;
    setCurrScrId: (scrId: string) => void;
    setCurrWidgetId: (wId: string) => void;
    addWidget: (widget: Widget) => void;
    updateWidget: (data: Partial<Widget>) => void;
}

export const useWidgetStore = create(
    immer<WidgetState & WidgetActions>((set) => ({
   
   
        scrs: [],
        init: () => {
   
   
            set((state) => {
   
   
                state.scrs = [createScr()];
                state.currScrId = state.scrs[0].id;
            });
        },
        addScr: (scr: Scr) => {
   
   
            set((state) => {
   
   
                state.scrs = [...state.scrs, scr];
            });
        },
        removeScr: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值