السّلام عليكم ورحمة الله وبركاته، نرحّب بكم في موقع كرتونـفلكس، موقع يهتم بالأنيميشن وفلكه الشاسع!
أُسس هذا الموقع ليكون خطوة جديدة في أُفق صفحة كرتونـفلكس، صفحة أسست بادئ ذي بدئ لنقل الأنيميشن من ثقافات بعيدة ولغات غريبة، للعرب بترجمته وبث أخباره (على عكس نظيرتها إكسفورد فانسب التي خصصت للترجمة ((هي فرع الترجمة خاصتنا)). فيما بعد خُصصت الصفحة لنقل الأخبار وفُتحت لها أفق جديدة لكتابة الآراء والتوصيات وغيرها من الأدبيات. يأتي إنشاء الموقع الخطوة التالية لسيرفر الديسكورد أو مجموعات جمع وتسهيل التواصل بين المعجبين العرب، نهدف من الموقع تذييل عقاب إيصال ما نريد إيصاله لجمهورنا، بشكل عام حيث تكون مجمعة وسهلة الاطّلاع وبشكل خاص (أشير إلى بعض المنصات التي لا تسمح بالشذوذ عن "معاييرها").
بصفتنا معجبين بالأنيميشن فإننا نحدّ أنفسنا ومن يتابعنا أو يهتم للأنيميشن مثلنا بضوابط لا نتخاطها، نحاول بها النظر بشكل سليم للأمام لنطوّر من وسائلنا وربما نحسن اهدافنا.
ومن خلال هده الصفحة سنقدم لكم كل ما قد تحتاجون معرفته حول الموقع كطريقة الإستخدام و المشاهدة مع الحلول لأغلب المشاكل التي قد تواجهونها ..
• في هده الجزئية ستجدون شرح صفحات الموقع الأساسيو و طريقة إستخدامها ككل
01 / الصفحة الرئيسية :
في البداية حين تدخلون للموقع ستصادفون الصفحة الرئيسية وفيها ستجدون تصميم متواضع يحتوى على عدة جزئيات منها ( جزئية 'أخر الحلقات المضافة ' و جزئية 'آخر الأخبار المضافة ' و جزئية ' آخر القنوات التلفزيونية المضافة ' و جزئية ' آخر الأفلام المضافة ' وجزئية تعريفية عن الموقع )..... هده هي مجرد إختصارات لصفحات أخرى سنشرجها في الأسفل ....
02 / صفحة الأخبار :
هده الصفحة عبارة عن بوتات تقوم بجلب الأخبار و البوستات والفيديوهات من مخلتف حساباتنا على مواقع التواصلل الإجتماعي (فيسبوك - إنستغرام - تويتر) ويعرضها بستايل عصري و متناسق وسهل الإستخدام ....
ويمكنكم إختيار المنصة التي تناسبكم لمشاهدة الأخبار منها سواء فيسبوك او إنستغرام أو تويتر ..... بالنسبة لقسم المراجعات و الكليبات هو بوت يجلب الأخبار من كلتا قناتينا ( الخاصة بالريفيوز و الخاصة الكليبات ) ويعرضهما في نفس الصفحة ...
03 / صفحة العروض :
• حين تدخلون لصفحة العروض ستجدون الأقسام التالية :
- قسم البرامج المدبلجة و المترجمة :
يحتوي هدا القسم على جميع البرامج التي نشرناها او سننشرها سواء كانت مدبلج أو مترجمة ...
- قسم الأفلام المدبلجة و المترجمة :
يحتوي هدا القسم أيضا على جميع الأفلام التي نشرناها او سننشرها سواء كانت مدبلج أو مترجمة ...
- قسم الكوميكس :
يحتوي هدا القسم على جميع الكوميكسز المترجمة التي نشرناها او سننشرها ...
Updating the Rendered Element
React elements are immutable. Once you create an element, you can’t change its children or attributes. An element is like a single frame in a movie: it represents the UI at a certain point in time.
With our knowledge so far, the only way to update the UI is to create a new element, and pass it to ReactDOM.render().
Consider this ticking clock example:
function tick() {
const element = (
<div>
<h1>Hello, world!</h1>
<h2>It is {new Date().toLocaleTimeString()}.</h2>
</div>
);
ReactDOM.render(element, document.getElementById('root'));
}
setInterval(tick, 1000);
React Only Updates What’s Necessary
React DOM compares the element and its children to the previous one, and only applies the DOM updates necessary to bring the DOM to the desired state.
You can verify by inspecting the last example with the browser tools:
Even though we create an element describing the whole UI tree on every tick, only the text node whose contents has changed gets updated by React DOM.
In our experience, thinking about how the UI should look at any given moment rather than how to change it over time eliminates a whole class of bugs.
Components let you split the UI into independent, reusable pieces, and think about each piece in isolation. This page provides an introduction to the idea of components.
Conceptually, components are like JavaScript functions. They accept arbitrary inputs (called “props”) and return React elements describing what should appear on the screen.
Functional and Class Components
The simplest way to define a component is to write a JavaScript function:
function Welcome(props) {
return <h1>Hello, {props.name}</h1>
}
This function is a valid React component because it accepts a single “props” (which stands for properties) object argument with data and returns a React element. We call such components “functional” because they are literally JavaScript functions.
You can also use an ES6 class to define a component:
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>
}
}
The above two components are equivalent from React’s point of view.
Classes have some additional features that we will discuss in the next sections. Until then, we will use functional components for their conciseness.
Rendering a Component
Previously, we only encountered React elements that represent DOM tags:
However, elements can also represent user-defined components:
const element = <Welcome name="Sara"/>
When React sees an element representing a user-defined component, it passes JSX attributes to this component as a single object. We call this object “props”.
For example, this code renders “Hello, Sara” on the page:
function Welcome(props) {
return <h1>Hello, {props.name}</h1>
}
const element = <Welcome name="Sara"/>
ReactDOM.render(
element,
document.getElementById('root')
);
Let’s recap what happens in this example:
- We call ReactDOM.render() with the < Welcome name="Sara" / > element.
- React calls the Welcome component with {name: 'Sara'} as the props.
- Our Welcome component returns a < h1 >Hello, Sara element as the result.
- React DOM efficiently updates the DOM to match < h1 > Hello, Sara .
This page introduces the concept of state and lifecycle in a React component.
Consider the ticking clock example from one of the previous sections. In Rendering Elements, we have only learned one way to update the UI. We call ReactDOM.render() to change the rendered output:
function tick() {
const element = (
<div>
<h1>Hello, world!</h1>
<h2>It is {new Date().toLocaleTimeString()}.</h2>
</div>
);
ReactDOM.render(
element,
document.getElementById('root')
);
}
setInterval(tick, 1000);
In this section, we will learn how to make the Clock component truly reusable and encapsulated. It will set up its own timer and update itself every second.
We can start by encapsulating how the clock looks:
function Clock(props) {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {props.date.toLocaleTimeString()}.</h2>
</div>
);
}
function tick() {
ReactDOM.render(
<Clock date={new Date()} />,
document.getElementById('root')
);
}
setInterval(tick, 1000);
However, it misses a crucial requirement: the fact that the Clock sets up a timer and updates the UI every second should be an implementation detail of the Clock.
Ideally we want to write this once and have the Clock update itself:
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
To implement this, we need to add “state” to the Clock component.
State is similar to props, but it is private and fully controlled by the component.
We mentioned before that components defined as classes have some additional features. Local state is exactly that: a feature available only to classes.
Converting a Function to a Class
You can convert a functional component like Clock to a class in five steps:
- Create an ES6 class, with the same name, that extends React.Component.
- Add a single empty method to it called render().
- Move the body of the function into the render() method.
- Replace props with this.props in the render() body.
- Delete the remaining empty function declaration.
Handling events with React elements is very similar to handling events on DOM elements. There are some syntactic differences:
- React events are named using camelCase, rather than lowercase.
- With JSX you pass a function as the event handler, rather than a string.
For example, the HTML:
<button onclick="activateLasers()">
Activate Lasers
</button>
is slightly different in React:
<button onclick={activateLasers}>
Activate Lasers
</button>
Another difference is that you cannot return false to prevent default behavior in React. You must call preventDefault explicitly. For example, with plain HTML, to prevent the default link behavior of opening a new page, you can write:
<a href="#" onclick="console.log('The link was clicked.'); return false">
Click me
</a>
In React, this could instead be:
function ActionLink() {
function handleClick(e) {
e.preventDefault();
console.log('The link was clicked.');
}
return (
<a href="#" onClick={handleClick}>
Click me
</a>
);
}
First, let’s review how you transform lists in JavaScript.
Given the code below, we use the map() function to take an array of numbers and double their values. We assign the new array returned by map() to the variable doubled and log it:
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map((number) => number * 2);
console.log(doubled);
This code logs [2, 4, 6, 8, 10] to the console.
In React, transforming arrays into lists of elements is nearly identical.
HTML form elements work a little bit differently from other DOM elements in React, because form elements naturally keep some internal state. For example, this form in plain HTML accepts a single name:
<form>
<label>
Name:
<input type="text" name="name" />
</label>
<input type="submit" value="Submit" />
</form>
This form has the default HTML form behavior of browsing to a new page when the user submits the form. If you want this behavior in React, it just works. But in most cases, it’s convenient to have a JavaScript function that handles the submission of the form and has access to the data that the user entered into the form. The standard way to achieve this is with a technique called “controlled components”.
Often, several components need to reflect the same changing data. We recommend lifting the shared state up to their closest common ancestor. Let’s see how this works in action.
In this section, we will create a temperature calculator that calculates whether the water would boil at a given temperature.
We will start with a component called BoilingVerdict. It accepts the celsius temperature as a prop, and prints whether it is enough to boil the water:
function BoilingVerdict(props) {
if (props.celsius >= 100) {
return <p>The water would boil.</p>
}
return <p>The water would not boil.</p>
}