Фон моего приложения - это ASP 5 ('vNext', MVC 6). Проект использует Visual Studio 2015 с интегрированным использованием gulp для повторного генерации моих клиентских скриптов с помощью браузера и gulp.Невозможно использовать компонент response-toolbox в моем приложении response.js
Так у меня есть исходный файл «.jsx» с требуют stmts, как:
var DatePicker = require('react-toolbox/lib/date_picker');
var React = require('react');
var ReactDOM = require('react-dom');
... и я запустить его через browserify и все решается, как и ожидалось. Я знаю, что он решает, потому что, если я изменю любой из требований stmts на что-то недействительное, я вижу ошибку браузера в консоли задач в VS. Я удалил все содержимое страницы и имел только тег скрипта со ссылкой на мое приложение в комплекте.
Таким образом, он находит все источники в порядке. И если я запустил простую html-страницу, которая ссылается на мой связанный скрипт без, любые ссылки на компонент DatePicker загружаются нормально.
Как только я пытаюсь использовать компонент DatePicker, хотя, я получаю среагировать ошибку:
React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM elements) or a ReactClass (for composite components). Check the render method of 'Dashboard'.
Однако я установить точку останова в браузере непосредственно перед использованием «DatePicker» компонент и повторная загрузка для проверки состояния, а «DatePicker» - полностью экземплярный, обычный объект, доступный для скрипта в этот момент. Я могу проверить его и увидеть, что его прототип «ReactComponent» и что он имеет методы, которые вы ожидаете от него: {render, isMounted и т. Д.}.
Так что это совсем не пусто. Я не могу понять, что ошибка возникает, когда кажется, что все правильно во время выполнения. Конечно, я боюсь, что это может быть функция того, как я просматриваю и связывание, но это для меня все ново, поэтому я не уверен, что даже попробовать.
Вот вся моя JSX srouce перед тем пакетирования:
var DatePicker = require('react-toolbox/lib/date_picker');
var React = require('react');
var ReactDOM = require('react-dom');
var Dashboard = React.createClass({
render: function() {
return (
<div>
<DatePicker />
</div>
);
}
});
ReactDOM.render(
React.createElement(
Dashboard, {}),
document.getElementById ("dashReactRoot")
);
... и вот уместна глотком задача:
gulp.task('b-fy-dashboard', function() {
gulp.src(paths.react + '/Admin/Profile/Dashboard.jsx')
.pipe(browserify({
insertGlobals: false,
bundleExternal: true,
debug: false,
transform: [
['browserify-css']
]
}))
.pipe(gulp.dest(paths.webroot + 'js/modules'));
});
... как это, что я не могу получить даже самое основное использование стороннего компонента для работы?!?! Я был на нем часами, пожалуйста, поделитесь своими мыслями или опытом.
Я очень ценю лидерство. Я исследую вашу ссылку и информацию. Сколько усилий было бы сделать переход на webpack, в грубых условиях? он интегрируется с глотком? и мне также придется переключиться на синтаксис ECMA 6/TypeScript? Я могу увидеть переход на webpack, если мне действительно нужно будет немного изменить свой gulpfile, но не нужно, если мне нужно изменить десятки исходных файлов, которые я уже написал. – user2403744
Это довольно большой переключатель.Я бы не рекомендовал это ради прогресса ваших проектов. Скорее возьмите часть своего свободного времени, чтобы изучить концепции до совершения. SurviveJS имеет [большую серию уроков] (https://survivejs.com/) - сначала я узнал от них. Также Kent C. Dodds собирается выпустить новую серию яичных яиц, поэтому следите за ней. Попробуйте, это супер мощный, как только вы покорите основные концепции. – ctrlplusb