Ga
Где-то может и ценится
Subkhan
import React from 'react' import thevideo from '../assets/videofirew.mp4' const Main = () => { return ( <div className='main'> <video src={thevideo} autoPlay loop /> <div className='content'> <h1>Welcome</h1> <p>To my site.</p> </div> </div> ) } export default Main
Oleg
Риктусемпра Авадакедавра!
Помогите, тут человеку плохо
Шаман Каган
Помогите, тут человеку плохо
ага после Фробениуса
Ga
Айти бывает разное, фронтенд - это не только лендинги же.
А я говорю про какую-нибудь демонстрацию работы с апи с помощью axios, к примеру. Поднять SSR’ку на next js
Subkhan
import React from 'react' import thevideo from '../assets/videofirew.mp4' const Main = () => { return ( <div className='main'> <video src={thevideo} autoPlay loop /> <div className='content'> <h1>Welcome</h1> <p>To my site.</p> </div> </div> ) } export default Main
Ребята, после выполнения заданий на сайте должно проигрываться видео. Как лучше это сделать? Добавить этот код в качестве компонента в Реакт?
Ga
Просто когда делаешь проект какой-то, ты не бездумно задачи решаешь, а начинаешь разбираться почему у меня не работает
Ga
Помогите. пожалуйста
После каких заданий?
Subkhan
После каких заданий?
import React, {useState} from 'react'; import Questionslist from './components/QuestionsList'; import {v4 as uuidv4} from 'uuid'; import './App.css'; const App = () => { const [currentQuestion, setCurrentQuestion] = useState(0); const [score, setScore] = useState(0); const [clicked, setClicked] = useState(false); const [showScore, setShowScore] = useState(false); const handleCorrectAnswer = (isCorrect) =>{ if (isCorrect) { setScore(score +1); } setClicked(true); }; const handleNextQuestion = () =>{ setClicked(false); if(currentQuestion < Questionslist.length -1){ setCurrentQuestion(currentQuestion +1) } else { setShowScore(true); } } return ( <div className="app-wrapper"> {showScore ? ( <div> <div className='completed'>Completed!</div> <div className='score-section'> Your Score: {score}/{Questionslist.length} </div> </div> ) : ( <div> <div className='question-section-wrapper'> <div className='question-count'> Question {currentQuestion +1} of {Questionslist.length} </div> <div className='question'> {Questionslist[currentQuestion].question} </div> </div> <div className='answer-section-wrapper'> {Questionslist[currentQuestion].answersList.map((answerOption) => ( <li className='answer-list' key={uuidv4()}> <button disabled={clicked} className={`answer-button ${clicked && answerOption.isCorrect ? "correct" : "" }`} onClick={() => handleCorrectAnswer(answerOption.isCorrect)} > {answerOption.answer}</button> </li> ))} </div> <div> <button className='next-button' onClick={handleNextQuestion} disabled={!clicked} >Next</button> </div> </div> )} </div> ); }; export default App;
Ga
мне хотя бы с сайта
Объясни логику после чего чего должно показываться видео?
Subkhan
После каких заданий?
const Questionslist = [ { question: 'When John arrived , we ___ dinner.', answersList: [ { answer: 'had had ', isCorrect: true}, { answer: 'had', isCorrect: true }, { answer: 'were having', isCorrect: true }, { answer: 'had been already having', isCorrect: false }, ], }, { question: 'I forward to from you', answersList: [ { answer: 'look, hear', isCorrect: false }, { answer: 'am looking, hearing ', isCorrect: true }, { answer: 'look, hearing', isCorrect: true }, { answer: 'am looking, will be hearing', isCorrect: false }, ], }, { question: "I am used to___ up early", answersList: [ { answer: "had got", isCorrect: false }, { answer: "have got", isCorrect: false }, { answer: "get", isCorrect: false }, { answer: "getting", isCorrect: true}, ], }, { question: 'He accepted the invitation with __.', answersList: [ { answer: 'abnegation ', isCorrect: false }, { answer: 'blandishment ' , isCorrect: false }, { answer: 'alacrity ', isCorrect: true }, { answer: 'aggrandize', isCorrect: false }, ], }, { question: "They inhabit ___ worlds of thought.", answersList: [ { answer: "disparate", isCorrect: true }, { answer: " denigrate ", isCorrect: false }, { answer: "convivial ", isCorrect: false }, { answer: "construe", isCorrect: false }, ], }, ]; export default Questionslist;
Ol
Ну вот, считай что есть правило, по которому цикл for (let i...) { ... } автоматически приводится и виду for (let tmp...) { let i = tmp; ... } для удобства. И тогда всё работает, переменная i объявления внутри блока
Мне кажется, до меня дошло. Но надо ещё переварить. Случай с вар. То есть, если взять тот случай с сеттаймом, сет тайм создаёт функцию при i=0. Но в момент запуска у нее нет локальной переменной, поэтому она полезет в глобальную. Но поскольку это функция отложенная, то цикл уже отмотался, и она возьмёт 10. А в случае с лет при первой итерации i=0, сет тайм тоже создаст функцию. И на момент запуска, цикл тоже уже отмотается, но разница будет в том, что функция при запуске не полезет в глобал, у нее будет записана локальная переменная со значением 0, правильно?
Ga
после ответа на эти вопросы
Ну он ответил на вопросы просто выводи компонент с видео
Ga
после ответа на эти вопросы
Здесь желательно redux, чтобы можно было отовсюду следить за результатом. Например, можно записывать все в глобальный стейт, а в конце перенаправлять на компонент где считывать результаты
Ol
В реальных проектах(не во всех ) довольно скудный набор знаний нужен ( фронт), потом можете переквалифицироваться в бэк
Авторов таких сообщений надо сразу банить)) Это как во флудилку скидывали рекламу, что "работодали готовы на любые условия, но никто не идёт"))
Ga
а без redux никак?
Можно, но это уже плохо. Как один из вариантов прямо в App создать стейт и везде прокидывать его. Но это плохая практика
Maksim Pozharskiy
Я честно говоря вот то что вы щас обсуждали не смог бы объяснить
Я уже говорил, если б меня спросили про это на собесе, я б не ответил
Maksim Pozharskiy
Не юзал сеттаймаут ни разу в жизни
Ol
Я уже говорил, если б меня спросили про это на собесе, я б не ответил
Я удивлена. Этот пример постоянно рассматривают на теме замыкания. Да ещё и говорят, что это задачка для собесов
Ol
Не юзал сеттаймаут ни разу в жизни
Да ты просто счастливчик!
Ol
Может быть, хз, мне не попадалось
А много ты собеседований прошел?
Maksim Pozharskiy
А много ты собеседований прошел?
с мая 2021 примерно 22-24 собеса технических
Ol
с мая 2021 примерно 22-24 собеса технических
Слушай, это мало) быстро тебя взяли)
Maksim Pozharskiy
Наверно
Maksim Pozharskiy
Вроде обычно у джунов проблема больше не пройти собес, а попасть на него
Mikhail
с мая 2021 примерно 22-24 собеса технических
А ты считаешь в рамках одной компании и одного интервью лупа разные раунды как разные интервью или как одно?
Andrii
А вот если кто не знает Си, то надо просто запомнить, что вот оно так работает и точка.
Maksim Pozharskiy
А ты считаешь в рамках одной компании и одного интервью лупа разные раунды как разные интервью или как одно?
Вот потому там через тире 2 числа потому что я скажем так "одну попытку" в команию считаю. Например в Яндекс было 2 тех собеса, но запись одна. И еще в какую то компанию или пару компаний было так же
Andrii
Я в си ни бум-бум. И про указали тоже
Тогла сложно объяснить, что там будет делаться... Сложно пояснить, что такое выделяется... Ну считай, что есть объект localVars и цикл for(let i=0; i<10; ++i) { /* тело */; }
Andrii
А в си есть замыкания?
Нет, но JS написан на С++, и в общем никто не мешает написать на Си интерпретатор языка с замыканиями. И тогда будет понятно
Andrii
Путано, то есть неправильно?
Ну... а что такое правильно?
Ol
Ну... а что такое правильно?
Ну, либо я правильно расписала порядок выполнения кода, либо нет
Andrii
for (let i=0; i<10; ++i) { /* Тело */ } будет скорее что-то вроде этого forVats = {}; /* Создаём локальные переменные в цикле for */ let i = 0; /* Инициализация переменной цикла */ for (;i < 10; ++i) { delete forVars.i; /* Удаляем переменную i из локальных */ forVars.i = i; /* Создаём новую переменную i, значение которой равно i */ const f = function() { log(forVars.i); } /* f это у нас функция, которая связана только что созданной новой переменной, которая имеет то же значение, то i */ }
Andrii
Но всё равно это очень путано, без указателей и выделения в куче сложно понять, что там на самом деле происходит. Надо запомнить, что вот так оно живёт.
Andrii
Вот когда на Си напишешь интерпретатор джаваскриптового языка с замыканиями, тогда и поймёшь что там делается
Ol
Ну... почему нелогично? Тогда замыкания будут работать без лишней головной боли
Ну потом что он должен сначала взять i, сверить с условием(которое может быть равно 10000000), потом повысить на 1. Зачем создавать сразу объект на 1000000 переменных? Сколько это памяти займет.
Andrii
Ну а по факту там будет оптимизация, что если объект никем не использовался, то и новый создавать не надо
Andrii
Ну оптимизация то такое... Это уменьшение количества глупых действий, чтобы сохранилось поведение
Andrii
let x = 1; if (x === 1) { let x = 2; console.log(x); } console.log(x);
Andrii
Что тут происходит? Поехали
Kirill
Привет ребзя! Нужна помощь! Скраплю инсту и мне надо программно авторизироваться в инсте(но при использовании selenium или request,не имеем токена,получаю бан) может кто знает как можно авторизоваться ?
Ivan
Товарищи, есть ли в сфере айти такой инструмент чтобы мне с.р. по химии написал
Andrii
let x = 1; Это можно пересети примерно так: надо создать новую переменную. Назовём её var#1 Имя x будет указывать на var#1. В var#1 запишем значение 1.
Andrii
if (x === 1) x у нас это var#1. Лезем в переменную var#1 у неё значение 1 достали, сравнили, всё ОК, идём в тело if
Ol
Что тут происходит? Поехали
Создаём глобальную переменную х со значением 1. Создаём иф с условием тру, где создаём локальную переменную со значением 2. Выводим 2. Завершаем иф. Переменная внутри блока умирает вместе с ифом. Вызывает переменная вне ифа. Находим глобальную переменную х=1, ее выводим.
Andrii
let x = 2; Надо создать новую переменную. Назовём её var#2 Имя x свяжем с var#2 var#2 присвоим значение 2.
Andrii
console.log(x) У нас переенная x связана с переменной var#2. Переменная var#2 имеет значение 2. Печатаем 2.
Igor
я бы попробовал сформулировать иначе ... вар переменная привязанна к функции и она одна на функцию ... а лет переменная одна на блок ... так вот лет объявленный в форе создает переменную уровня блока для тела ... соответсвенно при каждом входе в блок эта переменная "новая"
Andrii
} Очень интересный момент. В этот момент мы должны определить, что переменная x должна быть уничтожена. Потому что она объяслена в этом блоке. И мы начинаем искать в блоках выше, а если ли там что-то с именем x. И находим, что раньше x было var#1. И связываем x и var#1
Andrii
console.log(x); У нас переенная x связана с переменной var#1. Переменная var#1 имеет значение 1. Печатаем 1.
Andrii
Как-то вот так оно работает на самом низком уровне
Andrii
Можно ещё точнее, но там надо вводить словари переменных для каждого блока кода
Igor
for(var i= 0; i<5; i++) { let j = i; setTimeout(()=>{console.log(j);}, 1000*j); } просто равносильно for(let j= 0; j<5; j++) { setTimeout(()=>{console.log(j);}, 1000*j); }