🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

dt2react

Package Overview
Dependencies
Maintainers
1
Versions
59
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dt2react

one dome helper lib for react

Source
npmnpm
Version
1.1.7
Version published
Weekly downloads
1
-99.15%
Maintainers
1
Weekly downloads
 
Created
Source

dt2react

descr

ONE DOM helper library for react

Install

npm install dt2react;

Example

const { addClass } = dt2react;

Documnets

align

animation

  • cancelAnimationFramePolyfill
  • nativeRequestAnimationFrame
  • requestAnimationFramePolyfill
  • cssAnimation
  • throttleAnamition { throttleAnamition, throttleAnamitionDecorator }

class

  • addClass
  • classList
  • classList2
  • hasClass
  • removeClass
  • toggleClass
hasClass(node, className)
addClass(node, className)
removeClass(node, className)

events

on()
off()
onFocus()

position

getOffsetPosition(domEle): { top: number, left: number};
getWindowSize(): { width: number, height: number};

react

  • Align
  • childrenToArray
  • mapSelf
  • immutableUpdate
  • enhancePortal
  • Portal
  • reactEvents
  • getDefaultContainer
  • PureRenderDeepMixin
  • PureRenderMixin

Align

childrenToArray

mapSelf

immutableUpdate

Make setState easily and immutably. more info immutability-helper.

- No need to call setState manually

- No need to build syntactic sugar like `{x: {y: {$set: 1}}}`, just pass `x.y` and `1`
  • example
import { immutableUpdate as update } from 'dt2react';

class Todos extends Component {

  constructor() {
    super()
    this.update = update.bind(this)
    this.state = {
      text: '',
      items: []
    }
  }

  render() {
    const { text, items } = this.state
    const update = this.update
    return (
      <div>
        <input type="text" value={text} onChange={e => update('set', 'text', e.target.value)} />
        <button onClick={() => update('push', 'items', { text })}>Add</button>
        <ul>
          {items.map((item, i) => {
            return (
              <li key={i}>
                {item.text}
                <button onClick={() => update('splice', 'items', i)}></button>
              </li>
            )
          })}
        </ul>
      </div>
    )
  }
}
  • api

    Bind component and execute setState automatically

import { immutableUpdate as update } from 'dt2react';

class App extends Component {

  constructor() {
    super()
    this.update = update.bind(this)
    this.state = {
      name: 'John',
      relation: {
        family: 0,
        friend: 1
      },
      honor: ['1', '2', '3']
    }
  }

  someUsage() {
    this.update('set', 'name', 'Wall')
    this.update('set', 'relation.family', 1)
    this.update('set', ['relation', 'family'], 0)
    this.update('set', {
      name: 'Jamas',
      'relation.friend': 0
    })
    this.update('push', 'honor', '4') // ['1', '2', '3', '4']
    this.update('splice', 'honor', 0) // ['2', '3', '4']

    // All above actions just render once and all state has changed.
  }
}
  • Silent usage

which would not execute setState automatically

import { immutableUpdate as update } from 'dt2react';

const myData = { x: { y: 0 } }
const newData = update(myData, 'set', 'x.y', 1)
console.log(newData) // {x: {y: 1}}

enhancePortal

Portal

reactEvents

wrapper of eventlistener

var addEventListener = require('dt2react/lib/events/eventlistener');
var handler = addEventListener(document.body, 'click', function(e){
  console.log(e.target); // works for ie
  console.log(e.nativeEvent); // native dom event
});
handler.remove(); // detach event listener

use. (target: ReactNode, eventType: string, listener: Function): { remove: Function }

import addEventlistener from 'dt2react/lib/react/reactEvents';

getDefaultContainer

create default container

const rootDiv = getDefaultContainer();

PureRenderMixin

import PureRenderMixin from 'dt2react/lib/react/PureRenderMixin';

shouldComponentUpdate(nextProps, nextState) {
  return  PureRenderMixin.shouldComponentUpdate.call(this, nextProps, nextState);
}

// or

shouldComponentUpdate(...args) {
  return  PureRenderMixin.shouldComponentUpdate.apply(this, args);
}

PureRenderDeepMixin

deep compare

import PureRenderDeepMixin from 'dt2react/lib/react/PureRenderDeepMixin';

shouldComponentUpdate(nextProps, nextState) {
  return  PureRenderDeepMixin.shouldComponentUpdate.call(this, nextProps, nextState);
}

// or

shouldComponentUpdate(...args) {
  return  PureRenderDeepMixin.shouldComponentUpdate.apply(this, args);
}

scroll

calcScrollBarSize(fresh);// 获取当前浏览器滚动条宽度,推荐
getScrollbarWidth();
addPxToStyle(name, value);
domCss: { set, get };
getInnerHeight(el);
getInnerWidth(el);
getScroll(target, top);
prefixStyle(prop);

style

getStyle(node, property)
removeStyle(node, property)
addStyle(node, property, value)

utils

  • warning

  • invariant

  • shallowEqual

  • arrayTreeFilter

  • createChainFunc

  • debounce

  • deprecated

  • devtoolsCheck import { startCheck } from 'dt2react/lib/utils/devtoolsCheck'; startCheck({ redirect, afterOpen, delay })。可用 window.enableDevtoolCheck 直接进行控制

  • env check is dev: set NODE_ENV=development or NODE_ENV=production

  • stringFormatter

  • toCamelCase

  • trim

  • loadScripts

    直接用于react

      componentDidMount() {
        const script = {
          key: 'amapscripts',
          url: 'http://webapi.amap.com/maps?v=1.4.3&key=xxx'
        };
        document.getElementById('app').style.display = 'none';
        tools.asyncLoadScript(script, () => {
          document.getElementById('app').style.display = 'block';
          render(<Container
            navs={navs}
            defaultNav="amapdemo"
            logo="amos amap"
          />, document.getElementById('app'));
        });
    
        // tools.asyncLoadScripts(scripts, cb) 加载多个 [{key, url}, {key, url}]
      }
    
    • loadcss
    LoadCss.asyncLoadOne({
      key: 'amosframework',
      url: '/node_modules/amos-framework/dist/amosframework.css'
    });
    
    // 数组最前面的样式,优先级最低
    LoadCss.asyncLoadList([
      {
        key: 'amosframework',
        url: '/node_modules/amos-framework/dist/amosframework.css'
      }
    ]);
    
    • get dt2react/lib/utils/get
    import get from 'dt2react/lib/utils/get';
    
    const object = { 'a': [{ 'b': { 'c': 3 } }] };
    get(object, 'a[0].b.c'); // 3
    get(object, ['a', '0', 'b', 'c']); // 3
    get(object, 'a.b.c', 'default'); // default
    

------ utils end

BrowserSupportCore

/**
 * @return {bool} True if browser supports css animations.
 */
BrowserSupportCore.hasCSSAnimations();
/**
 * @return {bool} True if browser supports css transforms.
 */
BrowserSupportCore.hasCSSTransforms();
/**
 * @return {bool} True if browser supports css 3d transforms.
 */
BrowserSupportCore.hasCSS3DTransforms();
/**
 * @return {bool} True if browser supports css transitions.
 */
BrowserSupportCore.hasCSSTransitions();

DOMMouseMoveTracker

getVendorPrefixedName

/**
 * @param {string} property Name of a css property to check for.
 * @return {?string} property name supported in the browser, or null if not
 * supported.
 */
getVendorPrefixedName(property);

Query

canUseDOM
activeElement()
contains(context, node)
getContainer(container, defaultContainer)
getHeight(node, client)

getOffset(node): { top, left, width, height }

getOffsetParent(node)
getPosition(node, offsetParent)
getScrollbarSize(recalc)
getWidth(node, client)
getWindow(node)
isOverflowing(container)
nodeName(node)
ownerDocument(componentOrElement)
ownerWindow(componentOrElement)
scrollLeft(node, val)
scrollTop(node, val)

transition

changelog

v1.1.6

modify LoadScripts, Optimize lib pkg

v1.1.4

add style/clientRect

v1.1.0

add style/lineHeight

License

MIT

Keywords

dom

FAQs

Package last updated on 17 Mar 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts