Я изучил React и научился использовать Context API, но я слышал, что есть «новый контекстный API», и так как я изучил React с каким-то старым курсом (конец 2017 г.), я не не знаю, использую ли я новый или старый Context API.
Кроме того, я только что обнаружил Redux, и он почти не похож на то, что я использую, поэтому Redux и Context API одинаковы в конце?
Посмотрите на мой код:
Вот мой context.js:
import React, {Component} from 'react'
const Context = React.createContext();
const reducer = (state, action) => {
switch(action.type) {
case 'DELETE_CONTACT' :
return {
...state,
contacts: state.contacts.filter(contact =>
contact.id !== action.payload)
};
default:
return state;
}
}
export class Provider extends Component {
state = {
contacts : [
{
id: 1,
nom : 'John Doe',
email : 'john@gmail.com',
tel : "555-555-5555"
},
{
id: 2,
nom : 'John Doe',
email : 'john@gmail.com',
tel : "555-555-5555"
},
{
id: 3,
nom : 'Hugo Doe',
email : 'john@gmail.com',
tel : "555-555-5555"
}
],
dispatch: action => {
this.setState(state => reducer(state,action))
}
}
render() {
return (
<Context.Provider value={{
state: this.state,
sayHello: () => console.log("Hello World")
}}>
{this.props.children}
</Context.Provider>
)
}
}
export const Consumer = Context.Consumer;
Обратите внимание, что я использую "Reducer" и "Dispatch", которых нет даже в официальной документации React для "Context" :(?
Также вы можете посмотреть на моего "потребителя":
import React, { Component } from 'react'
import Contact from './Contact'
import {Consumer} from '../context'
export default class Liste extends Component {
render() {
return (
<Consumer>
{value => {
return(
<React.Fragment>
{value.state.contacts.map(contact => (
<Contact
key={contact.id}
id={contact.id}
nom={contact.nom}
email={contact.email}
tel={contact.tel}
/>
))}
</React.Fragment>
)
}}
</Consumer>
)
}
}
Каковы конкретные различия между контекстом и реакцией?
Могу ли я использовать Редуктор с Контекстом?
Я использую старый или новый контекст?
Почему Context подходит для маленьких приложений и Redux для больших?
Так много вопросов, на которые я не могу четко ответить, есть тонна статей и видео, которые говорят прямо противоположное.
Может ли кто-нибудь проявить доброту, чтобы просветить меня?