Для простого приложения React:
// App.js
import React, { useState } from 'react';
const App = () => {
const [name, setName] = useState('hello'); // state
return <div>{name}</div>;
};
export default App;
// main.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(<App />, document.getElementById('root'));
window.changeNameTo = ? // a method
Затем в консоли я могу запустить changeNameTo('world')
, чтобы изменить состояние (не только html или DOM), возможно ли это?
Обновление
На самом деле у меня есть два приложения React (устаревшие, также не маленькие), которые монтируются в разные div на одной странице, поэтому существует требование, что нажатие кнопки в одном приложении может вызвать изменение на другой. Поскольку это не стоит рефакторинга и консолидации их для небольшого требования, решение взлома является приемлемым и предпочтительным. С моей точки зрения, я бы написал клиент-делегат (возможно, использовал бы window
в качестве промежуточного места), чтобы соединить связь.