Skip to content

cym2050/P-minimalist-money

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  • @import-normalize

  • 使用dart-sass代替node-sass

  • yarn add dart-sass不行

  • yarn add node-sass@npm:dart-sass行

  • yarn add styled-components 支持文件yarn add @types/styled-components

  • copy run modify

  • yarn add --dev @types/react-router-dom

  • 使用HashRouter

  • 解决node-sass问题

  • yarn install失败,一致性验证

  • 解决styled-component支持 css $变量

  • hashRouter与BrowserRouter

  • jsx模板字符串里支持CSS变量

  • 有时候并不是你程序由问题,而是要重新yarn start一下,即使程序编译提示你语法错误,可能是之前编译的时候这个文件完全没有使用过这个特性(如react组件),编译器没有加载解析器,要重新yarn start一下才会加载。

实现tags的功能,使用react函数组件与typescript语法,useState,map函数返回一个数组的标签来渲染,用tags数组存所有tag,selectedTags存已选中的tag,用indexOf返回值从判断是否在,然后根据值设置clasName,然后样式不同

const TagsSection: React.FC = () => {
  const [tags, setTags] = useState<string[]>(["通用", "饮食", "交通", "住宿"]);
  const [selectedTags, setSelectedTags] = useState<string[]>([]);
  const onAddTag = () => {
    const newTag = window.prompt("请输入标签名:");   //添加新tag
    if (newTag) {
      setTags([...tags, newTag])
    }
  }
  const onToggleTag = (tag: string) => {
    if (selectedTags.indexOf(tag) >= 0) {
      setSelectedTags(selectedTags.filter(t => t !== tag));     //再次点击不选中
    } else {
      setSelectedTags([...selectedTags, tag])   //点击选中
    }
  }
  const setClass = (tag: string) => {
    return selectedTags.indexOf(tag) >= 0 ? 'selected' : '';    //设置className也就是设置样式
  }
  return (
    <Wrapper>
      <ol>
        {tags.map(tag => <li key={tag} onClick={() => onToggleTag(tag)} className={setClass(tag)}> {tag}</li>)}
      </ol>
      <button onClick={onAddTag}>新建标签</button>
    </Wrapper>
  )
}

可以input一个 state,useState 用解构的方式

具体标签编辑页面使用useParams获取url id展示不同页面

About

基于 React、React Router、React Hook 的记账工具

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published