Дык вроде неправильно объявлен класс. В классе вся работа должна идти только через функции.
|
В строке 64 интерпретатор неявно добавляет ; в конец строки, поэтому на else падает.
(А может и нет) |
Цитата:
|
Цитата:
|
ссыль на git
добавлю ссылку на весь проект, может это как-то поможет
https://github.com/komplekt17/diplomajs |
Очевидно, что в классе должны быть только методы и свойства, а у Вас там какая-та каша из условий.
|
то что внутри класса, надо "обернуть" в метод render
|
Цитата:
|
Цитата:
|
komplekt_17, строки 30-69 включительно, если не ошибаюсь.
|
Цитата:
|
Цитата:
|
Цитата:
|
так
import React, { Component } from 'react'; import { render } from 'react-dom' // Подключаем библиотеку unsplash-js // (при настроенной webpack-сборке) import Unsplash from 'unsplash-js'; class App extends Component{ // Создаем экземпляр объекта для доступа к API const unsplash = new Unsplash({ // Application ID из настроек вашего приложения applicationId: "8b304f2104e7394c1a13751e65223fec24a86aa32f974953dc0f4634c28e4e9b", // Application Secret из настроек вашего приложения secret: "6b338b013c7d2d927bd055c83d422d775531d9ea0916a006b2a9c5c3180b31a3", // Полный адрес страницы авторизации приложения (Redirect URI) // Важно: этот адрес обязательно должен быть указан в настройках приложения на сайте Unsplash API/Developers callbackUrl: "http://www.skart-info.ru/myProjects/diplomajs/" }); // Генерируем адрес страницы аутентификации на unsplash.com // и указываем требуемые разрешения (permissions) const authenticationUrl = unsplash.auth.getAuthenticationUrl([ "public", "write_likes" ]); // Считываем GET-параметр code из URL // [url]www.example.com/auth?code=abcdef123456[/url]... const code = location.search.split('code=')[1]; render( // Если код передан, отправляем запрос на получение токена { code ? ( unsplash.auth.userAuthentication(code) .then(res => res.json()) .then(json => { // Сохраняем полученный токен unsplash.auth.setBearerToken(json.access_token); }); // Теперь можно сделать что-то от имени пользователя unsplash.photos.listPhotos(1, 10, "latest") .then(res => res.json()) .then(json => { //console.log(json); return ( <div> { json.map(foto => { return ( <div key={foto.id} className="col-md-4 comment"> <div className="com-span-1"> <div className="com-name"> {foto.user.name} </div> <div className="com-date"> {foto.updated_at} </div> </div> <div className="text"> {foto.text} <img src={foto.links.html} /> </div> </div> ); }) } </div> ) }) ) : (location.assign(authenticationUrl)); } ); } export default App; |
komplekt_17, попробуйте так:
import React, { Component } from 'react'; // Подключаем библиотеку unsplash-js // (при настроенной webpack-сборке) import Unsplash from 'unsplash-js'; // Создаем экземпляр объекта для доступа к API const unsplash = new Unsplash({ // Application ID из настроек вашего приложения applicationId: "8b304f2104e7394c1a13751e65223fec24a86aa32f974953dc0f4634c28e4e9b", // Application Secret из настроек вашего приложения secret: "6b338b013c7d2d927bd055c83d422d775531d9ea0916a006b2a9c5c3180b31a3", // Полный адрес страницы авторизации приложения (Redirect URI) // Важно: этот адрес обязательно должен быть указан в настройках приложения на сайте Unsplash API/Developers callbackUrl: "http://www.skart-info.ru/myProjects/diplomajs/" }); // Генерируем адрес страницы аутентификации на unsplash.com // и указываем требуемые разрешения (permissions) const authenticationUrl = unsplash.auth.getAuthenticationUrl([ "public", "write_likes" ]); // Считываем GET-параметр code из URL // [url]www.example.com/auth?code=abcdef123456[/url]... const code = location.search.split('code=')[1]; class App extends Component{ render(){ // Если код передан, отправляем запрос на получение токена if (code) { unsplash.auth.userAuthentication(code) .then(res => res.json()) .then(json => { // Сохраняем полученный токен unsplash.auth.setBearerToken(json.access_token); }); // Теперь можно сделать что-то от имени пользователя unsplash.photos.listPhotos(1, 10, "latest") .then(res => res.json()) .then(json => { console.log(json); return ( <div> { json.map(foto => { return ( <div key={foto.id} className="col-md-4 comment"> <div className="com-span-1"> <div className="com-name"> {foto.user.name} </div> <div className="com-date"> {foto.updated_at} </div> </div> <div className="text"> {foto.text} <img src={foto.html} /> </div> </div> ); }) } </div> ); }); } // Если кода нет, отправляем пользователя на аутентификацию else{ location.assign(authenticationUrl); } } } export default App; |
в вашем варианте кода надо подключать реактовский рендер?
import { render } from 'react-dom' |
Цитата:
|
komplekt_17, не знаю, я больше в backend.
|
Цитата:
|
Цитата:
Метод render должен возвращать сам компонент. |
Таки класс объявлен некорректно. Корректно - в классе должны быть только методы(то, как Вам посоветовал оформить код Nexus).
Так что показывайте ошибку, а то получается испорченный телефон. Да, кстати, render не подразумевает то, что Вы вернете результат функции через промис( и уж тем более того, что результата вообще не будет). Результат надо возвращать сразу, причем именно в виде реактовского дерева. Для реакции на изменившееся окружение нужны другие методы. Нужно работать через state реактовских компонент.Как то так(пишу по памяти): class App extends Component{ constructor(props) { //Конструктор класса, выполняется при создании объекта. super(props); this.state = { color: 1, }; this.authrequest = this.authrequest.bind(this); } authrequest () { //Здесь запрос к серверу с ответом, по которому, будет изменен цвет компонента. Нужно использовать именно setState - иначе реакт не поймет что окружение изменилось ... ля - ля - ля а затем this.setState({color: 2,}); } componentDidMount(){ // Метод жизненного цикла компонента, будет вызван после того, как объект создан и задеплоен в виртуальное дерево. Стоит обратить внимание, что метод render будет вызван до вызова этого метода. this.authrequest(); } render(){ // Вызывается каждый раз, когда изменяется внутренне состояние компонента. const {color} = this.state; let cmp = null; // тот компонент, который отрисуется в зависимости от переменной color if (color===1){ cmp = (<div>1<div>); } else { cmp = (<div>2<div>); } return (<div> {cmp } <div>); } } |
Часовой пояс GMT +3, время: 06:21. |