J'ai une vue qui a plusieurs cartes avec des valeurs à l'intérieur de chacune.
Je peux dupliquer une carte. Cependant, cela ne préserve pas les valeurs de la carte dupliquée. P>
Si la carte A a des valeurs à l'intérieur de son état, comment puis-je dire à la vue parent de créer une carte B avec une carte à une carte? P >
Voici ma vue. Je rendu plusieurs cartes p> Lorsqu'une carte envoie une réponse telle que supprimer ou dupliquer, je vais dans ma fonction CardActionResponse. Voici la partie en double: P> <CreateVideoCard onChange={cardActionResponse} i={I} data={data} />
3 Réponses :
Si vous publiez un code, il sera utile de répondre.
De toute façon, comme vous ne l'avez pas fait, voici un projet de soln proposé. P>
Passer une fonction de rappel indique Onduplicate () de Parent à CardList -> Carte. Le composant de la carte doit appeler cette fonction onclick de duplicate. p>
Cette fonction Onduplicate mettra à jour l'état parent. Voici un exemple d'exemple P>
const data = [{
id: 1111,
name:"some name",
//THERE ARE OTHER FIELDS I HAVE NOT ADDED
}]
const CardList = (props) => (
<div>
{props.profiles.map(profile => <Card key={profile.id} onDuplicate={props.onDuplicate} profile={...profile}/>)}
</div>
);
class Card extends React.Component {
duplicate = ()=>{
console.log(this.props)
this.props.onDuplicate({...this.props.profile,id: 222})
}
render() {
const profile = this.props.profile;
return (
<div className="github-profile">
<img src={profile.avatar_url} />
<div className="info">
<div className="name">{profile.name}</div>
<div className="company">{profile.company}
</div>
<div><button onClick={this.duplicate}>duplicate</button></div>
</div>
</div>
);
}
}
class App extends React.Component {
state = {
profiles: data,
};
onDuplicate = (profileData)=>{
console.log("+++++++"+profileData.name+""+profileData.company)
this.setState(prevState => ({
profiles: [...prevState.profiles, profileData],
}));
}
render() {
return (
<div>
<CardList profiles={this.state.profiles} onDuplicate={this.onDuplicate}/>
</div>
);
}
}
La fonction dupliquer code> doit être à l'intérieur de la carte, puis appeler une fonction dans le parent qui passe l'état actuel. const Parent = () => {
const handleDuplicate = (state) => {
// your logic to create the new card with the initial state
}
<CardA onDuplicate={handleDuplicate}/>
}
const CardA = (props) => {
const { initialState, onDuplicate } = props;
const [state, setState] = useState(initialState);
const duplicate = () => {
onDuplicate(state);
}
}
La fonction de clé que j'ai dû utiliser était réactile.CloneElement
J'ai changé mon tableau d'articles sur P>
items.splice(event[1] + 1, 0, React.cloneElement(items[event[1]], { data: data }))
Salut. Il y a beaucoup de façons de résoudre ce problème. Qu'avez-vous essayé? Partagez du code afin que les gens puissent vous fournir des conseils qui conviennent à votre situation.