All Projects → Houfeng → Mota

Houfeng / Mota

Licence: mit
🎡 A state management library

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Mota

Zonote
Cross-platform desktop note-taking app. Sticky notes with Markdown and Tabs. All in one .txt file.
Stars: ✭ 255 (+44.07%)
Mutual labels:  markdown, desktop
Zettlr
A Markdown Editor for the 21st century.
Stars: ✭ 6,099 (+3345.76%)
Mutual labels:  markdown, desktop
Electron Markdownify
📕 A minimal Markdown editor desktop app
Stars: ✭ 700 (+295.48%)
Mutual labels:  markdown, desktop
Html2markdown
A library for converting HTML to markdown syntax in C#
Stars: ✭ 167 (-5.65%)
Mutual labels:  markdown
Qownnotes
QOwnNotes is a plain-text file notepad and todo-list manager with markdown support and Nextcloud / ownCloud integration.
Stars: ✭ 2,357 (+1231.64%)
Mutual labels:  markdown
Dvc.org
🔗 DVC website and documentation
Stars: ✭ 171 (-3.39%)
Mutual labels:  markdown
Cli
A command line utility for Structurizr.
Stars: ✭ 173 (-2.26%)
Mutual labels:  markdown
Frameless Titlebar
Customizable Electron Titlebar for frameless windows
Stars: ✭ 167 (-5.65%)
Mutual labels:  desktop
Slideshow
slideshow gems - write your slides / talks / presentations in plain text with markdown formatting conventions
Stars: ✭ 173 (-2.26%)
Mutual labels:  markdown
Wiki
Wiki.js | A modern and powerful wiki app built on Node.js
Stars: ✭ 14,985 (+8366.1%)
Mutual labels:  markdown
Swift Evolution
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language.
Stars: ✭ 12,943 (+7212.43%)
Mutual labels:  markdown
Robot Js
Native system automation for node.js
Stars: ✭ 169 (-4.52%)
Mutual labels:  desktop
Mininote
📔 A simple Markdown note-taking editor
Stars: ✭ 171 (-3.39%)
Mutual labels:  markdown
Oh My Earth
Make a real time earth picture as your wallpaper
Stars: ✭ 168 (-5.08%)
Mutual labels:  desktop
Sheets
Store & retrieve your static content in plain text files
Stars: ✭ 175 (-1.13%)
Mutual labels:  markdown
Maid
Markdown driven task runner.
Stars: ✭ 1,999 (+1029.38%)
Mutual labels:  markdown
How To Markdown
Learn how to start using Markdown
Stars: ✭ 173 (-2.26%)
Mutual labels:  markdown
Desktopfolder
Bring your Desktop Back to Life
Stars: ✭ 171 (-3.39%)
Mutual labels:  desktop
Markdown
📖Clean & Modern MarkDown Generator, 🔌Offline Support and Easy Generation of Markdown ⚡️⚛️ https://github.com/JP1016/Markdown-Electron/releases
Stars: ✭ 170 (-3.95%)
Mutual labels:  markdown
Yarle
Yarle - The ultimate converter of Evernote notes to Markdown
Stars: ✭ 170 (-3.95%)
Mutual labels:  markdown

logo

npm NPM Version Build Status Coverage Status npm

Overview

Mota 是一个面向 React 应用的状态管理库,希望用纯粹的、普通的 JavaScript 为应用编写不强依赖于框架的「业务模型」,然后,仅由 Mota 将「业务模型」关联到 React 应用。

此外,Mota 同时支持 Class 和 Hook 的两种编程风格。

Install

通过 npm 安装,如下

$ npm i mota --save

API

model

DemoModel.js

export class DemoModel {
  count = 0;
  add = ()=>{
    this.count += 1;
  }
}

Demol.js

import { model } from "mota";
import { DemoModel } from "./DemoModel"

@model(DemoModel)
export class Demo extends Component{
  render() {
    const {count, add} = this.model
    return <div>
      {count} <button onClick={add}>Add</button>
    </div>
  }
}

useModel

DemoModel.js

export const state = {
  count: 0,
}

export function add(){
  state.count += 1;
}

Demo.js

import { useModel } from "mota";
import { state, add } from "./DemoModel";

export function Demo{
  const { count } = useModel(state);
  return <div>
    {count} <button onClick={add}>Add</button>
  </div>
}

binding

For class

export class DemoModel {
  message = "hello";
  print = ()=> {
    console.log(this.message);
  }
}

@model(DemoModel)
@binding
export class Demo extends Component{
  render() {
    const { print } = this.model
    return <div>
      <input data-bind="message"/>
      <button onClick={print}>Print</button>
    </div>
  }
}

For hook

export const state = {
  message = "hello";
}

export function print(){
 console.log(state.message);
}

export function Demo(){
  const model = useModel(state);
  return binding(<div>
    <input data-bind="message"/>
    <button onClick={print}>Print</button>
  </div>, model);
}

Examples

在线 TodoList 示例 (示例源码)

Docs

Links

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].