#javascript #reactjs
#javascript #reactjs
Вопрос:
Мой код реакции, похоже, не работает. У меня есть следующий html:
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello World</title>
</head>
<body>
<div id="example"></div>
<form id="frm1" action="form_action.asp">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br><br>
<input type="button" onclick="myFunction()" value="Submit" class="btn-primary">
</form>
<script src="build/react.js"></script>
<script src="build/react-dom.js"></script>
<script type="text/babel" src="helloworld.js"></script>
</body>
</html>
и следующий код реакции
helloworld.js:
var Comment = React.createClass({
render: function(){
return(
<div>
<div className="commentText">Some Comment</div>
<button onClick="">Edit</button>
<button onClick="">Remove</button>
</div>
);
}
});
function myFunction() {
alert("hello world");
}
ReactDOM.render(
<Comment />,document.getElementById('example')
);
Но он не выдает комментарий в примере div и не вызывает функцию для поля ввода. Я подозреваю, что что-то не так с моей реактивной настройкой в целом, поэтому я публикую обе вещи здесь одновременно. Однако папка сборки и файлы, на которые ссылаются, все существуют.
Комментарии:
1. Какие-либо ошибки в консоли вашего браузера?
2. Нет, ошибок нет, кроме ошибки, связанной с функцией, которая не распознана, поэтому там она выдает мне «Неперехваченную ошибку ссылки: myFunction не определена». Вот почему я думаю, что он просто не распознает мой файл react (helloworld.js ) вообще.
3. Вы пропустили закрывающую скобку (
)
) после</div>
в вашем JSX (я удивлен, что это не было отображено как ошибка для вас; это было для меня).4. спасибо, я это исправил. но это все еще не работает. Я также удивлен, что это не отображалось как ошибка, но это, опять же, указывало бы на то, что что-то не так с моей настройкой, не так ли?
5. Вы пытаетесь использовать Babel? Похоже
babel-browser
, что он больше не поддерживается , поэтому вам придется перенести его с помощью Webpack или какой-либо другой системы сборки и загрузить его как обычный JavaScript.
Ответ №1:
Это работает, проверьте эту ссылку.
var Comment = React.createClass({
render: function(){
return(
<div>
<div className="commentText">Some Comment</div>
<button onClick="">Edit</button>
<button onClick="">Remove</button>
</div>
);
}
});
function myFunction() {
alert("hello world");
}
ReactDOM.render(
<Comment />,document.getElementById('example')
);
Комментарии:
1. спасибо за ответ. однако, похоже, у меня это не работает. может ли проблема в том, что я пытаюсь сделать это как часть электронного приложения?
2. Я так не думаю. Какой транспайлер вы используете? Какие-либо ошибки во время выполнения?
Ответ №2:
Используйте webpack для переноса вашего кода, поскольку babel-browser был удален.смотрите также, что функция события react onClick может быть определена в самом компоненте react helloworld.js
следующим образом
var Comment = React.createClass({
handleClick: function() {
alert("hello world");
}
render: function(){
return(
<div>
<div className="commentText">Some Comment</div>
<button onClick={this.handleClick()}>Edit</button>
<button onClick="">Remove</button>
</div>
);
}
});
function myFunction() {
alert("hello world");
}
ReactDOM.render(
<Comment />,document.getElementById('example')
);
Чтобы настроить webpack, перейдите по этой ссылке. Его легко отслеживать