Size: a a a

2018 November 02

NK

ID:72036040 in ❄️ effector
Прикольно. Вот нельзя сразу так было сделать, а не в реакт это пихать?)
источник

DZ

Dmitry Zherebko in ❄️ effector
Ну эт не оч оптимально
источник

DZ

Dmitry Zherebko in ❄️ effector
Вроде
источник

NK

ID:72036040 in ❄️ effector
Ну просто что бы апи опробывать...
источник

DZ

Dmitry Zherebko in ❄️ effector
Хотели хайпа
источник

DZ

Dmitry Zherebko in ❄️ effector
Ребята
источник

DZ

Dmitry Zherebko in ❄️ effector
ID:72036040
Ну просто что бы апи опробывать...
Но вообще норм апи
источник

NK

ID:72036040 in ❄️ effector
Не, вообще сейчас я думаю что мне нравится. Выглядит как магия и делает тоже, но при этом очень просто.

Надо пробовать....
источник

DZ

Dmitry Zherebko in ❄️ effector
там аустайд клик так изи
// hook 
function useOutsideClick(event, cb) {
 const ref = useRef(null);
 useEffect(() => {
   function handleClickOutside(e) {
     if ((!ref.current || !ref.current.contains(e.target)) && cb) {
       cb(e);
     }
   }
   document.addEventListener(event, handleClickOutside, true);
   return () => document.removeEventListener(event, handleClickOutside, true);
 }, []);
 return ref;
}

// hoc
export const enhanceWithClickOutside = params => Component => {
 const componentName = Component.displayName || Component.name;

 class EnhancedComponent extends React.Component {
   __domNode;
   __wrappedInstance;

   constructor(props) {
     super(props);
     this.handleClickOutside = this.handleClickOutside.bind(this);
   }

   componentDidMount() {}

   componentWillUnmount() {
     document.removeEventListener(params.event, this.handleClickOutside, true);
   }

   handleClickOutside(e) {
     const domNode = this.__domNode;
     if (
       (!domNode || !domNode.contains(e.target)) &&
       this.__wrappedInstance &&
       typeof this.__wrappedInstance.handleClickOutside === "function"
     ) {
       this.__wrappedInstance.handleClickOutside(e);
     }
   }

   render() {
     const { wrappedRef, ...rest } = this.props;

     return (
       <Component
         {...rest}
         ref={c => {
           this.__wrappedInstance = c;
           this.__domNode = ReactDOM.findDOMNode(c);
           wrappedRef && wrappedRef(c);
         }}
       />
     );
   }
 }

 EnhancedComponent.displayName = `clickOutside(${componentName})`;

 return hoistNonReactStatic(EnhancedComponent, Component);
};
источник

NK

ID:72036040 in ❄️ effector
Апи самое магическое, что я видел.
источник

DZ

Dmitry Zherebko in ❄️ effector
Я вроде разобрался как работает
источник

NK

ID:72036040 in ❄️ effector
та как работает понятно, просто ребята свой колстак со своими правилами игры поверх нативного внедрили и причем прозрачно. Так то условия есть - компонент должен исполняться только реактом...
источник

NK

ID:72036040 in ❄️ effector
Но вообще, вот если подумать, с хуками ты совсем не думаешь о реактивности, хотя у тебя прям вот все ей пропитано. Т.е. ты реально просто используешь функции и данные
источник

NK

ID:72036040 in ❄️ effector
Но вот интересно что там по потреблению памяти у всего этого дела...
источник

Т

Тимофей 🛴 in ❄️ effector
ID:72036040
Но вот интересно что там по потреблению памяти у всего этого дела...
Это многих пугает, в твитере дену много гневных сообщений написали
источник

NK

ID:72036040 in ❄️ effector
Тимофей 🛴
Это многих пугает, в твитере дену много гневных сообщений написали
Покажи? Так то я не замерял, вдруг там все не плохо...
источник

Т

Тимофей 🛴 in ❄️ effector
ID:72036040
Покажи? Так то я не замерял, вдруг там все не плохо...
Что то потерял, но где то ему писали про кучу создаваемых постоянно функций
источник

l

la gente está muy loca in ❄️ effector
ID:72036040
Апи самое магическое, что я видел.
"Держи пиво и смотри сюда"
источник

l

la gente está muy loca in ❄️ effector
А че так можно было
источник

DZ

Dmitry Zherebko in ❄️ effector
Lol
источник