• Как объединить два массива?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    Object.assign(defualt, params)
    Ответ написан
    6 комментариев
  • Как нативные модули привязываются к react-ту в React-native?

    nevkusniy
    @nevkusniy
    KRATOR
    Они экспортируются в нативном коде, к примеру в java есть такой декоратор, который позволяет вызвать эту нативную функцию из JS потока:
    // my method class
     @ReactMethod
        public void setCurrentTime(final Integer key, final Float sec) {
            MediaPlayer player = this.playerPool.get(key);
            if (player != null) {
                player.seekTo((int) Math.round(sec * 1000));
            }
        }


    В Obj-C есть свое:
    // создается нативный модуль OutputVolume
    @implementation OutputVolume
    
    RCT_EXPORT_MODULE();
    
    // Отдает метод get
    RCT_REMAP_METHOD(get,  
                     resolver:(RCTPromiseResolveBlock)resolve
                     rejecter:(RCTPromiseRejectBlock)reject)
    {
      float volume = [AVAudioSession sharedInstance].outputVolume;
      NSString* volumeString = [NSString stringWithFormat:@"%f", volume];
    
      if (volumeString) {
        resolve(volumeString);
      } else {
        reject(@"get_error", @"Error getting system volume", nil);
      }
    
    }


    А вот как принимать это в JS коде:
    import { NativeModules } from 'react-native';
    
    const MyNativeModule = NativeModules.MyNativeModule;


    Почитать:
    - https://www.promptworks.com/blog/writing-native-mo...
    - https://clever.ly/blog/2017/05/09/going-native-cre...
    - https://shift.infinite.red/native-modules-for-reac...
    Ответ написан
    Комментировать
  • JavaScript для новичков. Что означает оператор + перед операцией prompt?

    Alovinglol
    @Alovinglol
    front-end developer
    То что данные введённые в prompt преобразуются в тип Number.

    !!выражение - преобразовать к Boolean типу.
    аналог с одним ! - преобразовать данные к Boolean и инвертировать (например: !0 = true).

    +'10' + +'10' - сложить строки как числа (в этом примере ответ будет 20).

    value1 || value2 - используется для возвращения из функции какого-то результата (value1 если имеет !!value = true или value2), так-же можно записывать в переменную таким образом какое-то из значений, например:
    var foo = bar || test;
    Нужно использовать там где ожидается какое-то из значений, например:
    function fooTest(arg1, arg2){
     return arg1 || arg2;
    }
    
    fooTest(10, 40) = 10;
    fooTest(undefined, 40) = 40;


    выражение 1 && выражение 2 - когда нужно выполнить одно выражение затем второе, если первое будет false то второе никогда не выполниться.
    Например:
    // Возвести число в квадрат в случае если оно больше 10.
    function foo(x){
     return x > 10
    }
    
    function bar(x){
     return x*x;
    }
    
    function sqrdX(x){
      return foo(x) && bar(x);
    }
    
    sqrdX(40) = 1600;
    sqrdX(4) = false;
    Ответ написан
    1 комментарий
  • Как разбить значение инпута на 3 части?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    var names = 'Иванов Иван Иванович';
    
    console.log(names);
    
    var re = /\\s+/;
    var nameList = names.trim().split(re);
    
    console.log(nameList);
    Ответ написан
    Комментировать
  • Как написать компонент который будет возвращать компонент который в него положили?

    EvgeniyKvasyuk
    @EvgeniyKvasyuk
    https://habrahabr.ru/post/309422/ - замечательная статья, после которой вы легко напишите High order component
    Ответ написан
    Комментировать
  • Почему не происходит сложение массива?

    devellopah
    @devellopah
    Evgenij_nechujveter:

    твой код можно представить немного по-другому для понимания сути

    var a = [2,1];
    var b = [9,5];
    var mergeArray = function() {
    	var a, b, array; // изначально undefined
    	// поскольку в вызове функции ты не передал значения, чтобы присвоить их переменным a и b, они так и остаются undefined
    	// здесь ты пытаешься вызвать метод .concat() у undefined, должна вылетать ошибка по этому поводу
    	// ты ожидаешь что a и b будут взяты из глобального пространства, но этого не произойдёт, поскольку здесь внутри функции (то есть в локальном пространстве) ты объявил переменные c точно такими же идентификаторами, поэтому они "перетерут" глобальных "тёзок".
    	array = a.concat(b); // undefined.concat(undefined);
    };
    
    mergeArray();


    нечистая функция (императивный подход)
    либо не объявляешь локальные a и b (убираешь a, b из объявления функции) и работаешь напрямую с глобальными a и b

    чистая функция (функциональный подход)
    либо оставляешь как есть и просто вызываешь функцию с двумя аргументами (чтобы присвоить локальным a и b соответствующие массивы в качестве значений и ошибок не будет, поскольку у массивов есть метод .concat() "на вооружении")
    Ответ написан
    Комментировать