Это действительно странное ограничение. Вы говорите «пожалуйста, поймите», но я не знаю, поэтому я думаю, что вы должны объяснить, почему. Это может помочь вам найти лучшее решение.
Проблема здесь двоякая:
1) Ваш родительский компонент фактически не отображает вашего ребенка, у вас просто есть div с id
Child, который не имеет смысла в React.
2) Сценарию, в котором находится ваш родительский компонент, требуется каким-то образом доступ к дочернему компоненту, и без компоновщика модуля вам нужно будет поместить его в пространство имен, доступное для доступа, например window
) Вы рендеринг двух деревьев React. Чтобы передавать реквизиты из одного компонента в другой, они должны находиться в одном и том же дереве визуализации.
const Child = ({ name }) => {
return (
<div>{name}, I am the child component</main>
);
};
window.Child = Child
-
const Child = window.Child
class Parent extends React.Component {
render() {
const name = "Giggles";
return (
<div>
<Child name={name} />
</div>
);
);
};
ReactDOM.render(
React.createElement(Parent),
document.querySelector('#Parent')
);
Я думаю, что лучший подход должен представить 1 понятие за один раз. Вы не должны к 100% объяснять массивы в первом модуле. Вы можете detangle почти что-либо путем представления 1 понятия за один раз.
я преподавал бы их в этом порядке: Массивы, Указатели, Arrays+Pointers, OtherStuff[N].
<час>Массивы:
можно преподавать простые массивы сначала, таким образом, они понимают способность иметь несколько слотов данных, доступных от единственного имени переменной.
//The following doesn't need an understanding of pointers
int x[10];
x[0] = 5;
<час> Указатели:
Тогда можно учить указателям и как они работают, начиная с некоторых простых примеров:
int y = 5;
int *p = &y;
*p = 6;
printf("%i\n", y);
Удостоверяются, что дали особое внимание, что указатель точно так же, как любая другая переменная. Это хранит адрес памяти.
нет никакой потребности войти в стек по сравнению с "кучей" просто все же.
<час>Arrays+Pointers:
, Как выполнить итерации по массивам с указателями:
int x[10];
x[0] = 5;
x[1] = 6;
int *y = x;
printf("%i\n", *y);//prints the first element
y++;
printf("%i\n", *y);//prints the second element
<час> Тогда можно преподавать более сложные вещи...
Всюду по всем примерам делают интенсивное использование sizeof и печатающих адресов. Это действительно помогает понять то, что продолжается.
Этот вопрос можно задать для любого объектно-ориентированного языка действительно.
, Когда мне преподавали Java, мне сначала показали массивы и указатели, как последняя часть массивов, для демонстрации различия между глубокой копией и мелкой копией.
Я думаю, что это был бы лучший запуск с массивами, потому что понятие массива просто и интуитивно, но в C это были бы важные пересматривающие массивы после того, как преподают ponters, как 'Легион', предложенный прежде.
Вы преподавали бы указатели перед строками?
, Вероятно, нет. И большинство тех же аргументов применяется.
(Но обычно я соглашаюсь с @legion — не сверхдумайте это.)
Зависит, что они знают. Вы преподаете C или programming-C?
я видел очень мало успеха с последним. C является просто не очень интуитивным или прощающим языком. Я не видел студентов, благодарный за запуск с него, хотя я видел студентов, расстроенных программированием для него.
Те, кто собирается придерживаться программирования, выйдут и изучат C в их свободное время, так или иначе. Нет никакой потребности продвинуть его на них сначала.
, Если Вы просто преподаете C, и они уже знают указатели и массивы, затем преподавая, как указатели и работа массивов в C могут быть сделаны на одном уроке.
Как указано выше я не думаю, что порядок важен, но это - порядок, я желал, чтобы кто-то имел, показал мне материал.
Для большего количества информации о точке 4, я действительно рекомендую главу 4 "Шокирующая истина: C массивы и Указатели НЕ Являются Тем же!" в "Эксперте C, глубокие секреты C".
<час>/Johan
Обновление :
Некоторые ссылки на книгу, и существует также предварительный просмотр книги. http://books.google.se - Эксперт C, глубокие секреты C
И комментарии пользователей об этой книге верны: http://www.amazon.co.uk/Expert-Programming-Peter-van-Linden/dp/0131774298
Если они были представлены ассемблеру заранее, преподавайте указатели сначала.
, Если они были представлены высокоуровневым языкам (т.е. примерно что-либо) преподают массивы сначала.
, По моему опыту, люди, приезжающие в C без некоторого воздействия программированию уровня ассемблера (регистры, адреса, "компьютерные основные принципы"), собираются ввести мир боли. По моему скромному мнению, Вы - на самом деле более обеспеченный обучающий уровень ассемблера, кодирующий сначала, затем представляя C как лучший ассемблер.
Я предполагаю, что Вы преподаете C студентам, которые уже знают, как программировать на другом языке как Java (или назад в мое время, Паскаль). Я не думаю, что C является хорошим языком для использования для того, чтобы учить программирование завершить новичков.
я преподавал бы указатели сначала. Это - одна из важных новых идей, что это будет учиться в C. Они будут уже знать понятие массивов с других языков, таким образом, не будет никакой безотлагательности преподавать это сначала. Таким образом, при покрытии массивов в C можно говорить о том, как они - чрезвычайно синтаксический сахар для адресной арифметики с указателями, понятие, с которым они теперь знакомы.
Им нужно преподавать одновременно.
пример единственного размерного массива, получаемого доступ, поскольку, указатель на основу со смещением (размер шрифта * индекс) должен сделать появление.
т.е.
a[i] is equivalent to *(a + i)
Необходимо преподавать массивы сначала, потому что они существуют почти на любом другом языке и легче понять. Указатели или некоторые аспекты указателей, основываются на том, что стало известно о массивах. Это - органический порядок, по моему скромному мнению, и как я изучил это путь назад когда.
Я преподавал бы указатели сначала. Они могут быть объяснены, не преподавая массивы. При обучении массивов я мог тогда обратиться к указателям при объяснении выражения a[i]
, и при объяснении, как можно передать их функциям.
Не сверхдумайте вещи.
Обучение этих понятий максимально ясно и привлекательно является FAR, более важным, чем, какой порядок Вы выполняете в них.
я предложил бы затронуть основы массивов сначала, и сделать указатели и пересмотреть массивы (более полно на этот раз) позже.
Я преподаю указатели, прежде чем я буду волноваться о массивах. Однако обычно, студенты, которых я вижу, они были уже подвергнуты массивам в своем первом классе CS на некотором другом языке. Однако даже я преподавал C в первом классе CS, я сделаю указатели перед массивами и опишу массивы с точки зрения указателей. Просто, потому что модно в эти дни думать, что "никто никогда не будет нуждаться или не хотеть знать, как компьютеры на самом деле работают", не означает, что это верно.
Интересный вопрос - надеюсь, еще не поздно ответить.
Когда я преподавал программирование в Бостонском колледже в начале 80-х мы с коллегами каждый год боролись с этими проблемами, и мы постоянно корректировали наш подход. Тогда C был новым языком, поэтому мы пошли дальше от Basic до Pascal. Я помню, как думал в то время о том, как трудно было бы преподавать C только потому, что он был более расплывчатым, у студентов было больше возможностей ошибиться и более запутанными вещами, такими как различие между массивами и указателями, которые вам приходилось учить .
Что я нашел наиболее полезным, так это попытаться быть конкретным, а не абстрактным. Например, во вводном курсе программирования я использовал интерпретатор для простого десятичного компьютера, который вы могли бы программировать на нем ». s десятичный «машинный язык». У него были адреса от 0 до 999 и коды операций вроде 1234, где «1» означало «добавить в аккумулятор», а «234» - это адрес, по которому нужно найти число для добавления. Студенты писали действительно простые программы, например, складывали список чисел, и они выполняли их пошагово, наблюдая, что происходит на каждом шаге.
Я бы попросил их поиграть с этим около 3 недель, а затем начать БАЗОВЫЙ. Во втором курсе они перейдут на Паскаль. Этот маленький десятичный «компьютер» смог передать некоторые конкретные концепции, которые делают «абстракции» в «реальных» языках намного более понятными, например:
Теперь, что касается C, I ' я слышал, что его пренебрегают, считая его просто на голову выше ассемблера, но я думаю, это хорошо. Он всегда поражал меня как язык экспертов для экспертов. Я думаю, что идеи массивов, указателей и структур очень легко объяснить, если вы можете просто вернуться к базовой машине. То же самое для C ++ и объектно-ориентированного программирования.
Итак, подведем итог: если студенты понимают основную концепцию того, как работают компьютеры, даже если это действительно искусственный компьютер, то объяснять концепции структуры данных более высокого уровня будет намного проще.
1128557]