В своем «ReactApp» вы можете создать глобальную функцию для ее рендеринга:
window.drawThisReactApp = (into, initialData) => {
ReactDOM.render(<Provider ...><ReactApp {...initialData} /></Provider>, into);
}
Затем в «устаревшем» JS:
<script>
window.drawThisReactApp(document.getElementById(...), {...});
</script>
N.B. Нет необходимости упоминать React
или ReactDOM
.
Objective-c делает это различие для вас. Сообщения должны отправляться объектам, но функции могут использоваться в любое время.
messages :
Сообщения Objective C могут отправляться только объектам, а система обмена сообщениями - способ выполнять вызовы методов класса.
Пример:
// a class interface definition
// including a method named aMethod
@interface ANObject
{
}
- (void)aMethod;
@end
// a message sent to that object:
ANObject * myObject = [[ANObject alloc] init];
[myObject aMethod]; // <-- message
[myObject release];
functions :
Objective-C наследует весь язык C, поэтому вызовы функций в стиле C поддерживается и даже поощряется, когда ситуация требует их. Объекты Objective C просто передаются как указатели, так что вы все равно можете передавать их в функции в качестве аргументов. Конечно, следует соблюдать обычные предостережения и правила относительно передачи указателей на функции.
Пример:
// a regular C-style function
void someFunction(ANObject * argument)
{
// do something here...
}
// and how to call it:
someFunction(someObject);
когда использовать каждый?
Используйте messages / method , когда вы хотите получить доступ к некоторой собственности на объект / класс. Хорошими примерами будет доступ к длине строки NSString:
int stringLength = [myString length];
Установка значения свойства:
[myObject setHidden:YES];
или указание объекту выполнить какую-либо задачу:
[myAccount withdrawMoneyAndDriveToMexico];
Использовать функции в стиле C , когда вы хотите выполнить задачу, которая не принадлежит классу; то, что должно стоять в одиночестве. Хорошими примерами могут быть математические функции, такие как:
double degrees = ConvertRadiansToDegrees(radians);
Как правило, используйте сообщения каждый раз, когда вы имеете дело с компонентом Objective C; более или менее каждый раз, когда вы используете тип NS *.
Под прикрытием вы, по сути, используете вызовы функций C в любом случае; Первоначальная реализация Objective C была препроцессором для C. Но весь смысл использования Objective C заключается в том, чтобы получить синтаксис Smalltalk, который есть у вас где-то внутри [].
Вы задали много вопросов по Java; возможно, аналогия с Java поможет. Где бы вы использовали метод в Java, используйте сообщение в Objective-C. Где можно использовать статический метод в Java, используйте метод класса в Objective-C. Если вы обнаружите, что создаете служебные пакеты в Java, которые полны статических методов, то это может иметь смысл как функция в Objective-C.
И, конечно, это может иметь смысл, если вы делаете странные вещи с Objective-C ++.